后台获取文件大小 自动转换 B KB MB GB

java获取文件大小

io方式  

package filesize;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.math.BigDecimal;
import java.nio.channels.FileChannel;

public class size2 {
	public static void main(String[] args) {
		FileChannel fc = null;
		try {
			File f = new File("D:\\chengxu\\Chrome浏览器插件\\o_1apk0a5or1q77e3ie2g1k261nkba.zip");
			if (f.exists() && f.isFile()) {
				FileInputStream fis = new FileInputStream(f);
				fc = fis.getChannel();
				// logger.info(fc.size());
				System.out.println(fc.size() + " 字节");
				System.out.println(getPrintSize(fc.size()));

			} else {
				// logger.info("file doesn't exist or is not a file");
				System.out.println("file doesn't exist or is not a file");
			}
		} catch (FileNotFoundException e) {
			// logger.error(e);
			System.err.println(e);
		} catch (IOException e) {
			// logger.error(e);
			System.err.println(e);
		} finally {
			if (null != fc) {
				try {
					fc.close();
				} catch (IOException e) {
					// logger.error(e);
					System.err.println(e);
				}
			}
		}
	}

	public static String getPrintSize(long size) {
		// 如果字节数少于1024,则直接以B为单位,否则先除于1024,后3位因太少无意义
		double value = (double) size;
		if (value < 1024) {
			return String.valueOf(value) + "B";
		} else {
			value = new BigDecimal(value / 1024).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
		}
		// 如果原字节数除于1024之后,少于1024,则可以直接以KB作为单位
		// 因为还没有到达要使用另一个单位的时候
		// 接下去以此类推
		if (value < 1024) {
			return String.valueOf(value) + "KB";
		} else {
			value = new BigDecimal(value / 1024).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
		}
		if (value < 1024) {
			return String.valueOf(value) + "MB";
		} else {
			// 否则如果要以GB为单位的,先除于1024再作同样的处理
			value = new BigDecimal(value / 1024).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
			return String.valueOf(value) + "GB";
		}
	}

}
用文件的方式获取大小

	public static void main(String[] args) {
		File f = new File("/D:/workspace-wd/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/wdplus-web/WEB-INF/classes/../../upload/1BPTD91150006701A8C0000046294E99.jpg");
		if (f.exists() && f.isFile()) {
			// logger.info(f.length());
			System.out.println(f.length() + " 字节");
			System.out.println(getPrintSize(f.length()));
		} else {
			// logger.info("file doesn't exist or is not a file");
			System.out.println("file doesn't exist or is not a file");
		}
	}


  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值