在Java中如何将字节大小转换为易读的格式?

681

我该如何在Java中将字节大小转换为人类可读的格式?

比如1024应该变成“1 Kb”,而1024*1024应该变成“1 Mb”。

我已经厌烦了每个项目都要写这个实用程序方法。在Apache Commons中有没有静态方法可以完成这个任务?


42
如果您使用标准单位,1024应该变成“1KiB”,而1024*1024则应该变成“1MiB”。参见http://en.wikipedia.org/wiki/Binary_prefix。 - Pascal Cuoq
4
@ Pascal Cuoq:谢谢提供参考。在阅读这篇文章之前,我不知道在欧盟我们必须按法律要求使用正确的前缀。请允许我翻译为:“感谢您提供的参考。我直到阅读它之前才意识到,在欧盟,按法律要求我们必须使用正确的前缀。” - JeremyP
2
@DerMike,你曾经提到过“直到这样的库存在”。现在它已经成为现实了。:-)https://dev59.com/XG865IYBdhLWcg3wi_Q2#38390338 - Christian Esken
1
@AaronDigulla 你说得对。为什么那个比这个问题早两个月的问题被关闭为重复,而不是这个呢? - hc_dev
1
@hc_dev 我想早两个月提出的那个问题被关闭是因为这个问题有更好的答案。这两个问题都是在2010年发布的,另一个问题一直到2013年才关闭。(现在想想,SO真应该有一个“合并问题”的功能,把两个问题的答案合并到一个地方。) - FeRD
显示剩余3条评论
31个回答

-1
filename=filedilg.getSelectedFile().getAbsolutePath();
File file=new File(filename);

String disp=FileUtils.byteCountToDisplaySize(file.length());
System.out.println("THE FILE PATH IS "+file+"THIS File SIZE IS IN MB "+disp);

2
这个答案虽然可行,但是它是对@user601806在此线程中的先前答案的补充:https://dev59.com/XG865IYBdhLWcg3wi_Q2#4888400 为了使这个答案起作用,您需要Apache Commons IO(http://commons.apache.org/proper/commons-io/)依赖项。 - Edward Quixote

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接