java7读取文件大小

1      场景描述

Java7读取文件属性,比如文件大小如何操作?文件或目录呢?如何遍历目录?

2      工具类

这个工具类只是将long型的字节转换为字符串显示 

public class FileSizeUtil {
	/**
	 * 
	 * @param size 文件的字节大小
	 * @return	
	 * 	[0,1024] <--> *B
	 *  (1024,1024*1024]<--> *KB
	 *  (1024*1024,1024*1024*1024]<--> *MB
	 *  (1024*1024*1024,1024*1024*1024*1024]<--> *GB
	 *  (1024*1024*1024*1024,1024*1024*1024*1024*1024]<--> *TB
	 *  
	 */
	public static String getSize(long size){
		//格式化数字,小数点后保留两位有效数字
		DecimalFormat df = new DecimalFormat("#.00");
		if(size>=0 && size<=1024){
			return size + "B";
		}else if(size>1024 && size<= 1024*1024){
			return df.format(size*1.0/1024) + "KB";
		}else if(size>1024*1024 && size<= 1024*1024*1024){
			return df.format(size*1.0/(1024*1024)) + "MB";
		}else if(size>1024*1024*1024 && size<= 1024*1024*1024*1024){
			return df.format(size*1.0/(1024*1024*1024)) + "GB";
		}else if(size>1024*1024*1024*1024 && size<= 1024*1024*1024*1024*1024){
			return df.format(size*1.0/(1024*1024*1024*1024)) + "TB";
		}
		return null;
	}

}

3      测试读取文件/目录的大小

import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;

import lombok.SneakyThrows;

import org.exo.util.FileSizeUtil;
import org.junit.Test;

public class TestFileAttribute {
	/**
	 * 测试读取文件大小
	 */
	@Test
	@SneakyThrows //抛出异常。lombok的注解
	public void testFileAttributes(){
		//在项目根目录下面查找文件
		Path path = Paths.get("big-template.xlsx");
		BasicFileAttributes attributes = Files.readAttributes(path, BasicFileAttributes.class);  
		System.out.println(FileSizeUtil.getSize(attributes.size()));
	}
	/**
	 * 测试读取目录的大小
	 */
	@Test
	@SneakyThrows//抛出异常。lombok的注解
	public void testFileDirectoryAttributes(){
		//在项目根目录下面查找文件
		MyFileVistor<Path> vistor = new MyFileVistor<Path>();
		Files.walkFileTree(Paths.get("src"), vistor);
		System.out.println(FileSizeUtil.getSize(vistor.getSize()));
	}
	@SuppressWarnings("hiding")
	class MyFileVistor<Path> extends SimpleFileVisitor<Path>{
		long size = 0L;
		@Override
		public FileVisitResult visitFile(Path path,BasicFileAttributes attrs) throws IOException {
			size += attrs.size();
			return FileVisitResult.CONTINUE;
		}
		public long getSize(){
			return this.size;
		}
	}
}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值