【JAVA小白】 问关于IO流的问题

我是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-----");

  

}

  

}

也就是没有对是否是文件夹的判断,结果输出是正确的:
image.png
我的这两段代码,区别在哪儿呢?为什么加了一个是否是文件的判断,结果整个就完全不一样了?~~~~

阅读 1.9k
1 个回答

我自己后来解决掉了,代码如下:

package file;

  

import java.io.File;

  

public class TestFile {

  

public static void main(String\[\] args) {

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-----");

  

;

for (int i = 0; i < list2.length; i++) {

if(list2\[i\].isFile()) {

if(list2\[i\].length() < minSize) {

minSize = list2\[i\].length();

minFile = file1.list()\[i\];

}

if(list2\[i\].length() > maxSize) {

maxSize = list2\[i\].length();

maxFile = file1.list()\[i\];

}

} else {

continue;

}

}

System.out.println("最小的文件是:" + minFile);

System.out.println("最大的文件是:" + maxFile);

System.out.println("-----以上是part3-----");

}

  

}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题