读取文件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;
}
可能存在一些诸如换行符的不可视字符
String length()是字符个数,而不是字节数。
应该使用
byte[] data = str.getBytes();
使用data.length获取字节的数目。
java.lang.String.length() 方法返回此字符串的长度。长度是等于Unicode代码单元中的字符串的数目
java.io.File.length() 返回此抽象路径名定义的文件的长度,以字节为单位。