我是mac电脑,我在桌面上放了一个文件夹,名字叫test
这个文件夹里面有一些随意放置的文件,另外也有文件夹
我想要把这个test文件夹里面最大的文件和最小的文件的名字找出来
代码如下:
package file;
import java.io.File;
public class TestFile {
public static void main(String\[\] args) {
Long number = 0l;
Long minSize = Long.MAX\_VALUE;
Long maxSize = 0L;
String minFile = null;
String maxFile = null;;
File file1 = new File("/Users/apple/Desktop/test");
System.out.println(file1.getAbsolutePath());
System.out.println("-----以上是part1-----");
String\[\] list1 = file1.list();
File\[\] list2 = file1.listFiles();
for (String temp:list1) {
System.out.println(temp);
}
for (int i = 0; i < list1.length; i++) {
System.out.println("第" + (i+1)+ "个是:"+ list1\[i\] + "\\t大小是:" + list2\[i\].length());
}
System.out.println("-----以上是part2-----");
int minI = 0;
int maxI = 0;
for (int i = 0; i < list2.length; i++) {
if(list2\[i\].isFile()) {
if(list2\[i\].length() < minSize) {
minSize = list2\[i\].length();
minI = i;
} else if (i == list2.length - 1) {
minFile = file1.list()\[minI\];
System.out.println("最小文件 ——————" + minFile);
}
if(list2\[i\].length() > maxSize) {
maxSize = list2\[i\].length();
maxI = i;
} else if (i == list2.length - 1) {
maxFile = file1.list()\[maxI\];
System.out.println("最大文件 ——————" + maxFile);
}
} else {
continue;
}
}
System.out.println("最小的文件是:" + minFile);
System.out.println("最大的文件是:" + maxFile);
System.out.println("-----以上是part3-----");
}
}
如上述代码所示,最后输出的是null,这个我就看不懂了,这个我错在哪里了?
这里插入一句,我原来的代码是这样的:
package file;
import java.io.File;
public class TestFile {
public static void main(String\[\] args) {
Long number = 0l;
Long minSize = Long.MAX\_VALUE;
Long maxSize = 0L;
String minFile = null;
String maxFile = null;;
File file1 = new File("/Users/apple/Desktop/test");
System.out.println(file1.getAbsolutePath());
System.out.println("-----以上是part1-----");
String\[\] list1 = file1.list();
File\[\] list2 = file1.listFiles();
for (String temp:list1) {
System.out.println(temp);
}
for (int i = 0; i < list1.length; i++) {
System.out.println("第" + (i+1)+ "个是:"+ list1\[i\] + "\\t大小是:" + list2\[i\].length());
}
System.out.println("-----以上是part2-----");
int minI = 0;
int maxI = 0;
for (int i = 0; i < list2.length; i++) {
if(list2\[i\].length() < minSize) {
minSize = list2\[i\].length();
minI = i;
} else if (i == list2.length - 1) {
minFile = file1.list()\[minI\];
System.out.println("最小文件 ——————" + minFile);
}
if(list2\[i\].length() > maxSize) {
maxSize = list2\[i\].length();
maxI = i;
} else if (i == list2.length - 1) {
maxFile = file1.list()\[maxI\];
System.out.println("最大文件 ——————" + maxFile);
}
}
System.out.println("最小的文件是:" + minFile);
System.out.println("最大的文件是:" + maxFile);
System.out.println("-----以上是part3-----");
}
}
也就是没有对是否是文件夹的判断,结果输出是正确的:
我的这两段代码,区别在哪儿呢?为什么加了一个是否是文件的判断,结果整个就完全不一样了?~~~~
我自己后来解决掉了,代码如下: