查询文件夹的最大和最小文件,包括有子文件夹的。使用的递归的方法实现。缺点是有一样大小的文件时,只能获取一个文件名。
package cn.com.javase;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Tset_File {
public static void main(String[] args) {
System.out.println("请输入文件的路径");
Scanner sca =new Scanner(System.in);
String str = sca.nextLine();
File file =new File(str);
MaxFile maxf =new MaxFile();
maxf.maxFile(file);
// System.out.println(maxf.list);
System.out.println("最大的文件是:"+maxf.list.get(0));
System.out.println("最大的文件的名字是:"+maxf.name);
System.out.println("最大的文件的路径是"+maxf.path);
System.out.println("____________");
MinFile minf =new MinFile();
minf.minFile(file);
// System.out.println(minf.list);
System.out.println("最小的文件是:"+minf.list.get(0));
System.out.println("最小的文件的名字是:"+minf.name);
System.out.println("最小的文件的路径是"+minf.path);
}
}
class MaxFile {
Listlist =new ArrayList(); //创建动态数组来存放数据
Stringname;
Stringpath;
public list maxFile(File file) {
File[] f = file.listFiles();
for (int i =0; i < f.length; i++) {
if (f[i].isDirectory()) {
//continue;
maxFile(f[i]);
}else if (f[i].isFile()) {
if (list.size() <=0) {/*第一次执行,把第一个检测到文件放进动态数组*/
list.add(0, f[0].length());/*把数据放在动态数组的第一个位置*/
}else {
if (f[i].length() >= (long)list.get(0)) {/*每次跟动态数组的第一个作比较*/
list.add(0, f[i].length());/*每次把数据放在动态数组的第一个位置*/
}
}
}
long max = (long)list.get(0);
if(max == f[i].length()){
name = f[i].getName();
path = f[i].getAbsolutePath();
}
}
return (list)list;
}
}
class MinFile{
Listlist =new ArrayList();
Stringname;
Stringpath;
public list minFile(File file){
File[] f = file.listFiles();
for (int i =0; i < f.length; i++) {
if (f[i].isDirectory()) {
//continue;
minFile(f[i]);
}else if (f[i].isFile()) {
if (list.size() <=0) {/*第一次执行,把第一个检测到文件放进动态数组*/
list.add(0, f[0].length());/*把数据放在动态数组的第一个位置*/
}else {
if (f[i].length() <= (long)list.get(0)) {/*每次跟动态数组的第一个作比较*/
list.add(0, f[i].length());/*每次把数据放在动态数组的第一个位置*/
}
}
}
long mix = (long)list.get(0);
if(mix == f[i].length()){
name = f[i].getName();
path = f[i].getAbsolutePath();
}
}
return (list)list;
}
}
网友评论