获取文件的大小 KB、MB、GB、BT
在做清理文件的时候发现,文件大小 和 文件的 占用空间 是不一样的(可以查看电脑上详细看到),通过 length()方法得到的是文件占用空间,下面提供文件大小的获取方式。单位是B。
FileInputStream fis = null;
String fileSize = "";
try {
fis = new FileInputStream(f);
fileSize = String.valueOf(fis.available());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
但是看 available() 方法的返回值发现是int类型的
public int available() throws IOException {
// Android-added: close() check before I/O.
if (closed) {
throw new IOException("Stream Closed");
}
return available0();
}
也就是说能计算到最大文件大小是2147483647B = 1.99GB
public static String getFileSize(long size){
double cache = size / 1024f;
String unit = "K";
if (cache >= 1024f) {
cache /= 1024f;
unit = "M";
}
if (cache >= 1024f) {
cache /= 1024f;
unit = "G";
}
if (cache >= 1024f) {
cache /= 1024f;
unit = "T";
}
return new DecimalFormat("0.00").format(cache) + unit;
}
也就是说能计算到最大文件大小是2147483647B = 1.99GB
其实FileInputStream中还有一个方式获取 long 型的文件大小,fis.getChannel().size(),这种方式获取到的仍然是B为单位,换算后能计算8388607T大小的文件