后台获取文件大小 自动转换 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");
		}
	}


你可能感兴趣的:(后台获取文件大小的方式)