通过键盘录入一个文件夹路径,并判断他的大小,关于这个还有没有其他的写法啊?
马上就要点招了,感觉自己学的挺渣的,怎么办啊.........突然有种肯定过不了点招的感觉,噶虐这两天挺累的
package com.LianXi;
import java.io.File;
import java.util.Scanner;
public class Demo_DiGui {
/**
* @param args
*/
public static void main(String[] args) {
File dir=demo();
System.out.println(getFileLength(dir));
}
/*
* 从键盘获得一个文件夹路径,并统计他的大小
*
*
* 从键盘获取文件夹路径
* */
private static File demo() {
//创建键盘录入对象
Scanner sc=new Scanner(System.in);
//设定一个死循环
while(true){
//温馨提示:
System.out.println("请输入文件夹路径");
//创建File对象存储键盘录入的文件夹路径
File f=new File(sc.nextLine());
if(!f.exists()){ //!f.exists是判断f这个File对象存储的路径存在吗?
System.out.println("您输入的文件夹路径不存在,请重新输入");//如果不存在就读取这句话
}else if(f.isFile()){ //f.isFile是判断f中存储的是文件路径,
System.out.println("您输入的是文件路径,请重新输入文件夹路径");//如果是就读取这句话
}else{
return f;//然后上面的两个条件都不成立了,这个路径的确是文件夹路径,的确存在,然后就将f返回
}
}
}
/*统计该文件夹文件的大小
* */
public static long getFileLength(File f){
//写一个long类型的变量
long len=0;
//创建一个File数组,将传进来的文件夹的每一个文件的路径都作为一个元素存储进去
File [] subFile=f.listFiles();
//高级for循环遍历将这个文件夹中的每一个文件的路径都遍历一下
for (File sF : subFile) {
//如果这个路径是文件的话
if(sF.isFile()){
len=len+sF.length();//将这个文件的字节长度加起来
//判断是否是文件夹,通过递归调用
}else{ //如果是文件夹,那么就通过递归调用将他的每一个子文件的大小取出来和len相加
len=len+getFileLength(sF);
}
}
return len;//返回len
}
}
|