«

Java怎么实现判断并输出文件大小

时间:2024-7-24 11:46     作者:韩俊     分类: 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;
 
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:srccn_windows_7_ultimate_with_sp1_x64_dvd_618537.iso";
        //小文件
        String fileStr01 = "E:srcChrome-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("
Integer类型数据的最大值:"+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中使用具有较好的网络性能。

标签: java

热门推荐