Java如何实现判断并输出文件大小
作者:jasmyn518
这篇文章主要介绍了Java如何实现判断并输出文件大小问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
java判断并输出文件大小
有些地方需要判断用户上传的文件大小或者下载文件之类的地方,这个功能还是比较实用的。
Java代码如下:
package 包名; import java.io.File; public class FileAction { public static void main(String[] args) { File file = new File("chaoyue.jpeg"); long size = file.length() / 1024; System.out.println("文件大小:" + size + "kb"); } }
java计算文件大小三种方法及优缺点比较
1、通过File 的length() 方法计算文件大小;
2、使用FileInputStream后通过FileChannel的size()方法计算文件大小;
3、通过FileInputStream的available()方法计算文件大小;
代码示例:
package encryption; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.channels.FileChannel; public class Test02 { public static void main(String[] args) throws IOException { // 获取文件大小的三种方法 //大文件 String fileStr = "E:\\src\\cn_windows_7_ultimate_with_sp1_x64_dvd_618537.iso"; //小文件 String fileStr01 = "E:\\src\\Chrome-Goagent.7z"; File file = new File(fileStr); long size01 = getFileSize01(file); long size02 = getFileSize02(file); int size03 = getFileSize03(file); System.out.println("小文件计算文件大小"); System.out.println("文件名称:"+file.getName()); System.out.println("length方法获取文件大小:"+size01+" byte."); System.out.println("FileChannel方法获取文件大小:"+size02+" byte."); System.out.println("available方法获取文件大小:"+size03+" byte."); System.out.println("\nInteger类型数据的最大值:"+Integer.MAX_VALUE); } /* * 获取文件大小的方法01: * 通过文件的length() 方法获取文件大小,这个通常可以应用于本地文件的大小计算; * */ private static long getFileSize01(File file) { return file.length(); } /* * 获取文件大小的方法02: * 通过FileChannel类来获取文件大小,这个方法通常结合输入流相关, * 因此可以用于文件网络传输时实时计算文件大小; * */ private static long getFileSize02(File file) throws IOException { FileInputStream fis = new FileInputStream(file); FileChannel fc = fis.getChannel(); return fc.size(); } /* * 获取文件大小的方法03: * FileInputStream的available()方法看可以用于小文件的文件大小计算, * 因为available()的返回值类型为int型,可能会存在溢出的情况, * 所以 available()方法计算文件大小不建议使用; * */ private static int getFileSize03(File file) throws IOException { FileInputStream fis = new FileInputStream(file); return fis.available(); } }
计算大文件时:cn_windows_7_ultimate_with_sp1_x64_dvd_618537.iso
大文件计算文件大小
文件名称:cn_windows_7_ultimate_with_sp1_x64_dvd_618537.iso
- length方法获取文件大小:3419052032 byte.
- FileChannel方法获取文件大小:3419052032 byte.
- available方法获取文件大小:2147483647 byte.
- Integer类型数据的最大值:2147483647
计算小文件时:Chrome-Goagent.7z
小文件计算文件大小
文件名称:Chrome-Goagent.7z
- length方法获取文件大小:105959048 byte.
- FileChannel方法获取文件大小:105959048 byte.
- available方法获取文件大小:105959048 byte.
- Integer类型数据的最大值:2147483647
优缺点比较
1、length() 方法的返回值是long类型的,FileChannl的size()方法是long类型的,FileInputStream的available() 方法是int类型的;
2、在计算大文件的时候不能使用FileInputStream的available() 方法,这样计算结果会超出int类型最大值会产生溢出导致计算结果不准确;
3、在计算大文件的时候建议使用方法一和方法三,使用方法三会产生int类型溢出错误;
4、同时,在计算本地文件大小的时候建议使用方法一,length() 的方式计算文件大小;在计算网络传输文件的时候建议使用FileChannel的size() 方法,方法二包含在FileinputStream中使用具有较好的网络性能;
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。