【发布时间】:2018-12-16 11:34:07
【问题描述】:
使用这个程序,我试图读取给定文件夹位置中的所有文件,如果还有其他目录或子文件夹,那么程序也应该能够读取子文件夹中的文件。
此条件读取所有文件:- if(listOfFiles[i].isFile())
这个else if(listOfFiles[i].isDirectory()) 条件告诉是否有任何子文件夹。
如果有子文件夹,那么我再次调用相同的方法。即:ft.fileChecker(s2);
但是在这一步它会抛出一个运行时错误。
//Main class
public class FileCounter {
public static void main(String[] args) {
String s = "C:\\Users\\Nitk\\Desktop\\Project";
FileTester ftMain = new FileTester();
ftMain.fileChecker(s);
}}
//----------
import java.io.*;
import java.util.*;
public class FileTester {
FileTester ft = new FileTester();
public void fileChecker(String folderPath) {
File f = new File(folderPath);
File[] listOfFiles = f.listFiles();
List<String> list = new ArrayList<>();
FileLineCounter flc = new FileLineCounter();
int count = 0;
boolean isFound; boolean isFoundTxt;
String s = null;
for(int i =0; i < listOfFiles.length; i++){
if(listOfFiles[i].isFile()){
System.out.println(i +". File:" + listOfFiles[i].getName());
s = listOfFiles[i].getName();
list.add(s);
}else if(listOfFiles[i].isDirectory()) {
System.out.println(i +". Directory: " + listOfFiles[i].getName());
String s2 = folderPath+"\\"+listOfFiles[i];
ft.fileChecker(s2);
}
}
}
}
Output:
--------
Run-time error:
Exception in thread "main" java.lang.StackOverflowError
at FileTester.<init>(FileTester.java:3)
at FileTester.<init>(FileTester.java:4)
...
at FileTester.<init>(FileTester.java:4)
at FileTester.<init>(FileTester.java:4)
C:\Users\Nitish\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)
【问题讨论】:
标签: java stack-overflow java-io