开发者

Java如何实现判断并输出文件大小

开发者 https://www.devze.com 2023-04-12 10:38 出处:网络 作者: jasmyn518
目录Java判断并输出文件大小java计算文件大小三种方法及优缺点比较优缺点比较总结java判断并输出文件大小
目录
  • Java判断并输出文件大小
  • 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;
     
    imp编程客栈ort java.io.File;
    impojsrt 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.");php
    		System.out.println("available方法获取文件大小:"+size03+" byte.");
    		System.out.println("\nInteger类型数据的最大值:"+Integer.MAX_VALUE);
     
    	}
     
     
    	/*
    	 * 获取文件大小的方法01:
    	 * 通过文件的length() 方法获取文件大小,这个通常可以应用于本地文件的大小计算;
    	 * */
    	p开发者_JAV培训rivate 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中使用具有较好的网络性能;

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消