Java如何获取文件或目录的大小

IT 文章2年前 (2023)发布 小编
0 0 0

学习使用Java的IO类File,Files和Common IO的FileUtils类来获取文件或目录的大小。

1.使用标准IO的File.length()

为了获取文件的大小,File类提供了length()方法,它返回文件以字节为单位的长度。

如果读取文件的访问被拒绝,我们可能会得到SecurityException。

ad

程序员导航

优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站

如果该文件代表一个目录,则返回值是不确定的。

File file = new File("c:/temp/demo.txt");
long bytes = file.length();

2. 使用New IO的Files.size()

Files类提供了一个直接的方法size(),它的行为类似于前面的示例。它也返回文件的大小(以字节为单位)。

由于压缩、支持稀疏文件或其他原因,该大小可能与文件系统上的实际大小不同。

此方法如果读取文件的访问被拒绝,也可能会抛出SecurityException。

ad

AI 工具导航

优网导航旗下AI工具导航,精选全球千款优质 AI 工具集

File file = new File("c:/temp/demo.txt");
long bytes = Files.size(file.toPath());

3. 使用Common IO的FileUtils.sizeOf()

FileUtils.sizeOf()可以用来获取文件或目录的大小。

如果该文件是一个常规文件,那么文件的大小(以字节为单位)将被返回。
如果该文件是一个目录,那么目录的大小将被递归计算。需要注意的是,如果读取任何文件或子目录时出现问题,其大小将不会包含在结果中。

我们应该小心检查目录是否太大,因为sizeOf()不会检测最终大小值溢出并且可能会返回一个负值。

File file = new File("c:/temp/demo.txt");
long bytes = FileUtils.sizeOf(file);

4. 以格式化的方式显示大小

为了以格式化的方式向最终用户显示大小,我们可以自己进行格式化或者使用FileUtils.byteCountToDisplaySize()方法。

4.1 自定义格式化

使用String.format()方法根据需要生成格式化的输出字符串。

System.out.println(String.format("%,d Bytes", bytes));
System.out.println(String.format("%,d KB", bytes / 1024));

4.2. 使用FileUtils.byteCountToDisplaySize()

byteCountToDisplaySize()返回文件的可读版本的大小。请注意,文件大小四舍五入到最近的KB、MB或GB。

ad

免费在线工具导航

优网导航旗下整合全网优质免费、免注册的在线工具导航大全

System.out.println(FileUtils.byteCountToDisplaySize(2333444l));  //2 MB
System.out.println(FileUtils.byteCountToDisplaySize(2333444555l));  //2 GB

5.结论

在这篇简短教程中,我们学会了如何计算Java中文件或目录的大小。我们还看到了如何格式化文件大小以向用户显示。

对于常规文件,我们可以使用Java IO类。对于计算目录的大小,使用Commons IO的FileUtils是一个很好的选择。

 

© 版权声明

相关文章

暂无评论

暂无评论...