alan_xu188
徐修杰
2015-11-30 03:33
采纳率: 87.5%
浏览 2.6k
已采纳

File.length和BufferedReader.length的问题

读取文件File,累加read.length大概是file.length的85%左右。这是怎么回事?求大神帮忙看看。

 File file = new File(path);
            long fileLength = file.length();
            length = reader.readLine().length();// 去除表头
            // 解析
            while ((line = reader.readLine()) != null) {
                try {
                    length += line.length();
                    } catch (NumberFormatException e) {
                    Log.d("NumberFormatException", e.getMessage());
                } catch (Exception e) {
                    e.printStackTrace();
                }
                }
                Log.d("Test", myPercent(length, fileLength));



                ////
                public static String myPercent(long y, long z) {
        String baifenbi = "";// 接受百分比的值
        double baiy = y * 1.0;
        double baiz = z * 1.0;
        double fen = baiy / baiz;
        NumberFormat nf = NumberFormat.getPercentInstance(); // 注释掉的也是一种方法
        nf.setMinimumFractionDigits(2); // 保留到小数点后几位
        // DecimalFormat df1 = new DecimalFormat("##.00%"); // ##.00%
        // 百分比格式,后面不足2位的用0补齐
        baifenbi = nf.format(fen);
        // baifenbi = df1.format(fen);
        return baifenbi;
    }
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • bdmh
    bdmh 2015-11-30 03:45
    已采纳

    可能存在一些诸如换行符的不可视字符

    点赞 评论
  • zjj7188
    JinJie_Zhang 2015-11-30 03:55

    String length()是字符个数,而不是字节数。
    应该使用
    byte[] data = str.getBytes();
    使用data.length获取字节的数目。

    点赞 评论
  • zjj7188
    JinJie_Zhang 2015-11-30 03:57

    java.lang.String.length() 方法返回此字符串的长度。长度是等于Unicode代码单元中的字符串的数目

    java.io.File.length() 返回此抽象路径名定义的文件的长度,以字节为单位。

    点赞 评论

相关推荐