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

 更新时间:2023年04月12日 08:55:27   作者: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中使用具有较好的网络性能;

总结

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

相关文章

  • Java中的Kafka拦截器详解

    Java中的Kafka拦截器详解

    这篇文章主要介绍了Java中的Kafka拦截器详解,Producer 拦截器(interceptor)是在 Kafka 0.10 版本被引入的,主要用于实现 clients 端的定制化控制逻辑,需要的朋友可以参考下
    2023-11-11
  • SpringBoot基于数据库的定时任务统一管理的实现

    SpringBoot基于数据库的定时任务统一管理的实现

    这篇文章主要介绍了SpringBoot基于数据库的定时任务统一管理的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 基于XML配置Spring的自动装配过程解析

    基于XML配置Spring的自动装配过程解析

    这篇文章主要介绍了基于XML配置Spring的自动装配过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • java实现电脑定时关机的方法

    java实现电脑定时关机的方法

    这篇文章主要介绍了java实现电脑定时关机的方法,首先通过java注册windows服务程序,再以一个简单的java程序实现定时关机的功能,非常具有实用价值,需要的朋友可以参考下
    2014-11-11
  • Java Swing组件文件选择器JFileChooser简单用法示例

    Java Swing组件文件选择器JFileChooser简单用法示例

    这篇文章主要介绍了Java Swing组件文件选择器JFileChooser简单用法,结合实例形式分析了Swing组件中的文件选择器JFileChooser的简单使用方法,需要的朋友可以参考下
    2017-11-11
  • Java实现暴力匹配算法

    Java实现暴力匹配算法

    暴力匹配算法是一种简单的字符串匹配算法,本文主要介绍了Java实现暴力匹配算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Java MD5加密工具类的方法(支持多参数输入)

    Java MD5加密工具类的方法(支持多参数输入)

    在实际开发过程中,MD5加密是一种常见的数据安全处理手段,常用于密码存储、数据完整性校验等场景,这篇文章主要介绍了Java MD5加密工具类(支持多参数输入),需要的朋友可以参考下
    2024-05-05
  • Java常用注解扩展对比举例详解

    Java常用注解扩展对比举例详解

    这篇文章主要介绍了Java常用注解扩展对比的相关资料,提供了丰富的代码示例,并总结了最佳实践建议,帮助开发者更好地理解和应用这些注解,需要的朋友可以参考下
    2025-03-03
  • SpringBoot Knife4j框架&Knife4j的显示内容的配置方式

    SpringBoot Knife4j框架&Knife4j的显示内容的配置方式

    Knife4j框架是基于Swagger2开发的在线API文档生成工具,主要功能包括自动生成API文档、接口文档展示、接口测试工具、接口权限控制和在线调试,该框架支持通过注解自动生成详细的接口文档,开发者可以直接在文档界面进行接口测试和调试
    2024-09-09
  • Java Stream流语法示例详解

    Java Stream流语法示例详解

    这篇文章主要为大家详细介绍了Java的Stream流,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03

最新评论