通过Java 代码获取文件大小可以有两种方法:
// bigFile.iso 是一个4G 大小的镜像文件
// 1 是调用File 的length 方法
File file = new File("/test/bigFile.iso");
System.out.println(file.length());
// 2 是通过FileInputStream 的available 方法
try {
File file = new File("/test/bigFile.iso");
FileInputStream is = new FileInputStream(file);
System.out.println(is.available());
} catch (IOException e) {
}
但是两个方法有一个区别就是,length 返回的是long 类型,而available 返回的是int 类型,而int 的最大值是 2^32,对应到文件大小也就是 2 G,所以如果一个文件的大小超过 2 G,那么available 方法是无法得到正确结果的。
如果仍然要通过文件流来获取文件的大小,可以使用java.nio.*下的新工具——FileChannel ,调用FileChannel 的size 方法。
try {
FileInputStream is = new FileInputStream(file);
FileChannel fc = is.getChannel();
System.out.println(fc.size());
} catch (IOException e) {
}
网友评论