前言

在Java 的File 类中, 有一个 length() 的方法, 可以返回long型的文件的大小,  单位是字节。

对于系统的使用者来说,这个输出是不太容易理解的, 所以把这个long 型的值换算成  KB, MB , GB 或是TB为单位的String 显示就很必要了。

得到格式化字串

直接上代码:

        private static  String getFileSizeStr(long fileSize){String sFileSize = "";if(fileSize>0){double dFileSize = (double)fileSize;double kiloByte = dFileSize/1024;if(kiloByte < 1){return sFileSize + "Byte(s)";}double megaByte = kiloByte/1024;if(megaByte < 1){sFileSize = String.format("%.2f",kiloByte);return sFileSize + "KB";}double gigaByte = megaByte/1024;if(gigaByte<1){sFileSize = String.format("%.2f",megaByte);return sFileSize + "MB";}double teraByte = gigaByte/1024;if(teraByte<1){sFileSize = String.format("%.2f",gigaByte);return sFileSize + "GB";}sFileSize = String.format("%.2f",teraByte);return sFileSize + "TB";}return sFileSize;}

需要说明的是:

1. 这里的1MB  = 1024 KB (也有的地方为了方便直接使用1000的)

2.  long 型的文件大小值需要先转换成 double, 再除以1024, 否则的话得到的小数位数就都是 .00 了 (原因很简单,是java基础的内容, 只是code 的时候容易忽略这个)

当 long i = 5;

比较
        double d = i/3;  ==> 1.0


         double d = (double)i/3;  ==> 1.6666666...

的区别就知道了.

3. 保留两为小数的写法

String.format("%.2f",gigaByte);

保留小数位数

从以上的第三点, 引申说一下在Java 中,如果保留指定的小数位数

方法1: 使用String.format 的方式

String.format是在JDK1.5中新增的静态方法,功能强。它主要功能是格式化数据,大致分为这些类(常规类型、字符类型、数值类型、日期类型)

语法是:

常规类型、字符类型和数值类型的格式说明符的语法:%[参数索引位置$][转换标识符][最小官渡][.保留精度位数]转换方式

日期语法:%[参数索引位置$][t或T]转换方式

*   %[index$][标识][最小宽度][保留精度]转换方式
     *      标识:
     *          '-'    在最小宽度内左对齐,不可以与“用0填充”同时使用
     *          '+'    结果总是包括一个符号
     *          '  '    正值前加空格,负值前加负号
     *          '0'    结果将用零来填充
     *          ','    每3位数字之间用“,”分隔(只适用于fgG的转换)
     *          '('    若参数是负数,则结果中不添加负号而是用圆括号把数字括起来(只适用于eEfgG的转换)
     *      最小宽度: 最终该整数转化的字符串最少包含多少位数字
     *      保留精度:保留小数位后面个数
     *      转换方式:
     *          'e', 'E'  --  结果被格式化为用计算机科学记数法表示的十进制数
     *          'f'       --  结果被格式化为十进制普通表示方式
     *          'g', 'G'  --  根据具体情况,自动选择用普通表示方式还是科学计数法方式
     *          'a', 'A'  --  结果被格式化为带有效位数和指数的十六进制浮点数

细部使用可以参见Java API.

也可参考 http://www.cnblogs.com/xytop/archive/2008/08/26/1277125.html

方法2: 使用BigDecimal

BigDecimal 是需要高精度时可以使用的

     double   f   =   111231.5585;  BigDecimal   b   =   new   BigDecimal(f);  double   f1   =   b.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();  

BigDecimal.ROUND_HALF_UP 是设定四舍五入

方法3: 使用 java.text.DecimalFormat

String s = new java.text.DecimalFormat("#.00").format(3.1415926);

方法4: 使用 NumberFormat

     NumberFormat ddf1=NumberFormat.getNumberInstance() ; ddf1.setMaximumFractionDigits(2);s = ddf1.format(3.1415926) ;System.out.print(s); 

Java 读取文件大写和格式化输出字串相关推荐

  1. JAVA读取文件内容,按格式输出文件

    JAVA读取文件内容,按格式输出文件记录 一.我们要做什么? 1.本次我们来使用java将文件按格式输出. 二.我们为什么要做? 1.在使用jmeter脚本时候有个动态参数的文件,需要读取多个参数,人 ...

  2. java读取文件的方法是_Java读取文件方法大全

    Java读取文件方法大全 2011/11/25 9:18:42  tohsj0806  http://tohsj0806.iteye.com  我要评论(0) 摘要:文章来源:http://www.c ...

  3. java读取文件(按字符或字节读取)

    2019独角兽企业重金招聘Python工程师标准>>> java读取文件(按字符或字节读取) import java.io.BufferedReader; import java.i ...

  4. java读取文件夹下所有文件并替换文件每一行中指定的字符串

    java读取文件夹下所有文件并替换文件每一行中指定的字符串 该文章为转载文章,请尊重原文作者的劳动成果,好的文章应该被展示 原文传送门 多说两句,关键时候救人性命的人,可以称之为大人,随时做好利见大人 ...

  5. java中文件的输入和输出

    以下所有对象需要关闭(close)的,都使用jdk1.7的try-with-resource来进行释放 文件的输入(读取)需要使用到: 创建一个File对象,在初始化的时候赋值一个文件路径. 创建Fi ...

  6. 用Java读取文件的5种方法-BufferedReader,FileInputStream,文件,扫描仪,RandomAccessFile

    There are many different ways to read a file in Java. In this tutorial, we will look into 5 differen ...

  7. java读取文件到字符串_Java读取文件到字符串

    java读取文件到字符串 Sometimes while working with files, we need to read the file to String in Java. Today w ...

  8. java 读取文件 效率_Java 逐行读取文本文件的几种方式以及效率对比

    前言 上周负责的模块中需要逐行读取文件内容, 写完之后对程序执行效率不太满意, 索性上网查了一下 Java 逐行读取文件内容的各种方法, 并且简单地比对了一下执行效率. 在此记录, 希望能够帮到有需要 ...

  9. java读取文件 string_java读取文件为string

    java读取文件为string qdt   文件   tof   cin   .com   user   mar   oci JA卜嗜9MCSI儇凭EUhttp://www.docin.com/app ...

最新文章

  1. pandas生成新的累加数据列、pandas生成新的累加数据列(数据列中包含NaN的情况)、pandas计算整个dataframe的所有数据列的累加
  2. Systemd:再一次的,回归第一进程
  3. 【final】评价①
  4. LinkedList 模拟栈和队列
  5. 数列分块入门3(查询前驱)
  6. 如何在Hibernate中维护表的历史记录
  7. linux查看tomcat启动内存溢出,关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论-Fun言...
  8. 【金万维】天联高级版客户端打开U8报错:未监听端口
  9. 【教程】生态环境影响评价技术应用及典型实践案例分析
  10. ImageAI的介绍(2)
  11. 手机麦克风声音太大_手机麦克风没声音怎么设置?瞬间声音变大,一键设置即可...
  12. N-Tiers開發方式(ASP/ASP.NET、VB6/VB.NET呼叫使用COM+元件)
  13. 前端开发者如何快速的把UI撸出来?(讽刺版)
  14. python实现将不同的附件发邮件到不同的地区
  15. 哈工大 计算机系统 一纸开卷CSAPP
  16. python 简单方式红绿灯状态识别
  17. Unity 判断点击的是否是UI
  18. 创建对象与对象属性添加
  19. android 使用mediaplayer播放视频的时候设置请求头header
  20. USACO 奶牛食品(最大流)

热门文章

  1. 编译指令#pragma详解
  2. ref out的用法
  3. 基于多视角学习和个性化注意力机制的新闻推荐(附论文下载链接)
  4. 冠军奖金50万,2020腾讯广告算法大赛广发“英雄帖”
  5. 预训练语言模型论文分类整理
  6. word2vec中的数学模型
  7. 跨境电商ERP哪个好?
  8. html¥符号代码是什么,html怎么特殊符号赋
  9. 知识蒸馏在广告系统中的应用(一)
  10. HDU-3537 Mock Turtles型翻硬币游戏