【Java】把字节数B转化为KB、MB、GB的方法

在文件处理的系统中,很容易就能通过一些系统自带的方法取出其大小,问题是这个大小往往只是一个字节数B。

如果要把这个字节数转化为KB、MB、GB的最终呈现给用户,则涉及到整除与取余的算术运算。

方法如下:

	public static String getPrintSize(long size) {
		//如果字节数少于1024,则直接以B为单位,否则先除于1024,后3位因太少无意义
		if (size < 1024) {
			return String.valueOf(size) + "B";
		} else {
			size = size / 1024;
		}
		//如果原字节数除于1024之后,少于1024,则可以直接以KB作为单位
		//因为还没有到达要使用另一个单位的时候
		//接下去以此类推
		if (size < 1024) {
			return String.valueOf(size) + "KB";
		} else {
			size = size / 1024;
		}
		if (size < 1024) {
			//因为如果以MB为单位的话,要保留最后1位小数,
			//因此,把此数乘以100之后再取余
			size = size * 100;
			return String.valueOf((size / 100)) + "."
					+ String.valueOf((size % 100)) + "MB";
		} else {
			//否则如果要以GB为单位的,先除于1024再作同样的处理
			size = size * 100 / 1024;
			return String.valueOf((size / 100)) + "."
					+ String.valueOf((size % 100)) + "GB";
		}
	}

在主函数调用几个字节数B,进行测试:

package fileSize;

public class fileSizeTest {
	public static String getPrintSize(long size) {
		//如果字节数少于1024,则直接以B为单位,否则先除于1024,后3位因太少无意义
		if (size < 1024) {
			return String.valueOf(size) + "B";
		} else {
			size = size / 1024;
		}
		//如果原字节数除于1024之后,少于1024,则可以直接以KB作为单位
		//因为还没有到达要使用另一个单位的时候
		//接下去以此类推
		if (size < 1024) {
			return String.valueOf(size) + "KB";
		} else {
			size = size / 1024;
		}
		if (size < 1024) {
			//因为如果以MB为单位的话,要保留最后1位小数,
			//因此,把此数乘以100之后再取余
			size = size * 100;
			return String.valueOf((size / 100)) + "."
					+ String.valueOf((size % 100)) + "MB";
		} else {
			//否则如果要以GB为单位的,先除于1024再作同样的处理
			size = size * 100 / 1024;
			return String.valueOf((size / 100)) + "."
					+ String.valueOf((size % 100)) + "GB";
		}
	}

	public static void main(String[] args) {
		System.out.println(getPrintSize(200));
		System.out.println(getPrintSize(200000));
		System.out.println(getPrintSize(200000000));
		System.out.println(getPrintSize(2000000000));
	}

}

运行结果如下图:

时间: 2024-10-15 13:15:20

【Java】把字节数B转化为KB、MB、GB的方法的相关文章

Byte/KB/MB/GB 等字节单位换算

字节单位换算公式: 1 GB = 1024 MB 1 MB = 1024 KB 1 KB = 1024 Bytes 1 Byte = 8 bits 将字节单位转化为目标单位 根据公式我写了一段C++代码,用于将输入的以字节为单位的数值,转换为目标单位数值.代码中的枚举类型用的是C++11的语法. enum class Unit{ Byte, KB, MB, GB, TB, PB, EB }; double convert(double size, Unit unit) { double resu

字节b换算kb/mb/gb/tb/pb

public static string HumanReadableFilesize(double size) { string[] units = new string[] { "B", "KB", "MB", "GB", "TB", "PB" }; double mod = 1024.0; int i = 0; while (size >= mod) { size /= mod

Bit,Bytes,KB,MB,GB,TB,PB,EB,ZB,YB

Bit,Bytes,KB,MB,GB,TB,PB,EB,ZB,YB 汉字字符 2字节英文字符 1字节中文标点 2字节英文标点 1字节一个字节就是一个八位二进制数啊,2就是00000010,4就是00000100,8就是00001000 把标点符号和字符修改成占2个字节的方法 在cms中,大家会发现发表文章的时候如果里面有标点符号,它只点一个字节,可是在网站的显示过程中它和汉字所占的位置长度是一样的,为了达到更好的效果.在这里告诉大家标点符号和字符修改成占2个字节的方法 '函数名:gotTopic

计算机硬盘大小转换(B,KB,MB,GB,TB,PB之间的大小转换)

程序猿都非常懒.你懂的! java程序猿在实际的开发中会遇到非常多的单位换算问题.今天我给大家带来的是关于计算机硬盘大小的换算.多数情况下.一般要求b,kb,mb,gb,tb,pb之间的大小转换,我们都知道他们之间的换算是乘以1024或者除以1024.可是详细怎么用java代码来实现呢?请看以下的代码: package com.herman.utils; /*** * @see 存储大小(单位)转换器. * @author Herman.Xiong * @date 2014年5月27日 13:2

取文件的大小 (KB,MB,GB...)

2种方式: VB 和 C# 1,  VB Public Function GetFileSize(ByVal iFileSizeKB As Long) As String Dim iFileSizeMB As Integer Dim iFileSizeGB As Integer If (iFileSizeKB >= 1024) Then iFileSizeMB = iFileSizeKB / 1024 If (iFileSizeMB >= 1024) Then iFileSizeGB = iF

根据文件大小自动判断单位B,KB,MB,GB

<php> /** * 文件大小格式化 * @param integer $size 初始文件大小,单位为byte * @return array 格式化后的文件大小和单位数组,单位为byte.KB.MB.GB.TB */ function file_size_format($size = 0, $dec = 2) { $unit = array("B", "KB", "MB", "GB", "TB&qu

计算机存储单位KB,MB,GB,TB,PB,EB,ZB,YB后面是什么?

关于计算机存储单位KB,MB,GB,TB,PB,EB,ZB,YB后面是什么? 我们知道Kb是1000的1次方,所以 MB就是1000的2次方(106) GB就是1000的3次方(109) TB就是1000的4次方(1012) PB就是1000的5次方(1015) EB就是1000的6次方(1018) ZB就是1000的7次方(1021) YB就是1000的8次方(1024) 但是1000的9次方(1027)是什么呢? 对此我查阅了国外很多资料,他们有着很多不同的说法, 说法一:Brontobyt

KB/MB/GB。。单位换算

今天遇到一个需求,需要把数据单位进行换算,记录一下.写的不好请勿见怪. function bytesToSize( bytes ) {//单位转化         var k = 1024,              sizes = ['b','KB','MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];         if(bytes === 0){             return {   txt: 0,                 unit: si

b B KB MB GB 之间的关系

b 比特 位 B ---字节 KB ---千比特 MB ---兆比特 GB ---吉比特 1B = 8b (8个位) 一个字节 等于 8位 1 KB = 1024B 1MB = 1024KB 1GB = 1024MB 英文和数字占一个字节 中文占一个字符,也就是两个字节 字符 不等于 字节. 字符(char)是 Java 中的一种基本数据类型,由 2 个字节组成,范围从 0 开始,到 2^16-1. 字节是一种数据量的单位,一个字节等于 8 位.所有的数据所占空间都可以用字节数来衡量.例如一个字