【java基础之代码】【检测文件或文件夹的大小】

package demo1;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class Demo1_file {

	public static void main(String[] args) throws IOException {//抛异常
		Scanner sn = new Scanner(System.in);			//创建一个从键盘输入对象
		System.out.println("请输入文件夹");					//提示输入文件路径
		String s = sn.nextLine();						//获取输入的字符串	
		File f = new File(s);							//以输入的文件路径创建一个File对象
		long sum = fileDaXiao(f);						//调用检测文件大小方法
		System.out.println(sum);						//把文件大小输出到控制台(这里的大小单位是字节)
	}
	
	public static long fileDaXiao(File f) throws IOException {//抛异常
														//检测文件大小方法
		if(!f.exists()) {								//判断输入的字符串是否为正确的文件路径
			System.out.println("你输入的不是文件夹!");		//如果不是文件,则返回控制台提示。当然,你也可以不说
			return 0;									//理论上不是文件是没有大小之说
		}else if(f.isFile()) {							//判断如果是文件,则会计算大小
			/*System.out.println("你输入的是一个文件!");		//里面用注释是一个字节一个字节计算文件大小,用此方法效率低
			FileInputStream fis = new FileInputStream(f);
			long s = 0;
			while(fis.read() != -1) {
				s++;
			}
			fis.close();
			return s;*/
			return f.length();							//返回的这个方法效率高
		}else {											//前面两个都不是的话,就只有文件夹
			System.out.println("你输入的是一个文件夹:");		//这也是提示作用,你也可以不用
			long sum = 0;								//因为是文件夹,所以要计算文件夹里面的各文件大小,所以这里定义一个计算文件大小的long类型			
			File[] f2 =f.listFiles();					//获取文件夹里面的所有文件,包括文件夹
			for(int i = 0;i < f2.length; i++) {			//循环每一个文件
				sum += fileDaXiao(f2[i]);				//调用自身方法的递归
			}
			return sum;									//返回此文件夹的大小
		}
	}

}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值