Java找文件夹中最小或者最大的文件
题目:
一般说来操作系统都会安装在C盘,所以会有一个 C:\WINDOWS目录。
遍历这个目录下所有的文件(不用遍历子目录或者遍历子目录)
找出这些文件里,最大的和最小(非0)的那个文件,打印出他们的文件名
注: 最小的文件不能是0长度
1. 不包括子文件夹中的文件
思路:创建文件数组,直接比较
package j2se;
import java.io.File;
public class IOTest {
public static void main(String[] args) {
/* 遍历文件夹(不包括文件夹内文件)
*
* 一般说来操作系统都会安装在C盘,所以会有一个 C:\WINDOWS目录。
遍历这个目录下所有的文件(不用遍历子目录)
找出这些文件里,最大的和最小(非0)的那个文件,打印出他们的文件名
注: 最小的文件不能是0长度
*/
File file = new File("C:/Windows");
System.out.println("文件是否存在" + file.exists());
if (file.exists()) {
System.out.println("文件存在我们进行下一步操作!");
}else {
System.out.println("文件不存在!");
return;
}
File[] files = file.listFiles();//创建数组文件
String fMaxName = "";
String fMinName = "";
long fMaxLength = 0;
long fMinLength = Long.MAX_VALUE;
for (File f : files) {
if (f.isFile()) {
System.out.println(f);
if (f.length() > fMaxLength) {
fMaxLength = f.length();
fMaxName = f.getAbsolutePath();
}
if (f.length() != 0 && f.length() < fMinLength) {
fMinLength = f.length();
fMinName = f.getAbsolutePath();
}
}
}
System.out.println("最大的文件是:" + fMaxName + "长度为" + fMaxLength + "字节");
System.out.println("最小的文件是:" + fMinName + "长度为" + fMinLength + "字节");
}
2. 包括子文件夹中的文件
思路:递归调用找文件夹中最最小的或者最大的文件
我们以c:/Windows为例
package j2se;
import java.io.File;
public class IOTest {
//递归找子文件中最小或者最大的
static File maxFile;
static File minFile;
static long maxLength = 0;
static long minLength = Long.MAX_VALUE;
public static void main(String[] args) {
String path = "c:/Windows";
File f = new File(path);//创建一个文件路径
long startTime = System.currentTimeMillis();
getMaxMinFile(f);//获取最大或者最小文件
long endTime = System.currentTimeMillis();
if (maxFile != null) {
System.out.println(path + "目录下的最大文件是:" + maxFile);
System.out.println("文件长度是:" + maxLength + "字节");
}
if (minFile != null) {
System.out.println(path + "目录下的最小文件是:" + minFile);
System.out.println("文件长度是:" + minLength + "字节");
}
System.out.println("一共耗时" + (endTime - startTime) + "ms");
}
public static void getMaxMinFile(File f) {
if(f.isFile()) {//判断是文件
if (f != null) {
if (f.length() >= maxLength) {
maxFile = f;
maxLength = f.length();
}
if (f.length() != 0 && f.length() < minLength) {
minFile = f;
minLength = f.length();
}
}
} else if(f.isDirectory()) {//判断是文件夹
File[] fs = f.listFiles();//以文件数组的形式,返回当前文件夹下所有文件,不包括子文件
if (fs != null) {
for (File file : fs) {
getMaxMinFile(file);
}
}
}
}
}
运行结果:
c:/Windows目录下的最大文件是:c:\Windows\SoftwareDistribution\Download\b4241790717d3721cce19cff0db43ebd321d8f98
文件长度是:473274097字节 c:/Windows目录下的最小文件是:c:\Windows\Boot\PCAT\bootnxt
文件长度是:1字节 一共耗时196639ms