私は特定のディレクトリのファイルを一覧表示するためのJavaクラスを持っています。これは、ファイルとサブディレクトリを持たないディレクトリでうまく動作します。しかし、内部に子ディレクトリがあると、java.lang.StackOverflowError例外が発生します。ここにmain()メソッドのクラスがあります:ディレクトリにファイルをリストしているときにエラーが発生しました
package test;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class DisplayFilesAndFolders {
public static void main(String[] args) {
try {
List<File> files = getFileList();
for(File file : files){
System.out.println(file);
}
}
catch(Exception e) {
e.printStackTrace();
}
}
public static List<File> getFileList() throws FileNotFoundException{
String sPath = "C:\\Users\\owner\\Desktop\\Screen Shot\\";
File filePath = new File(sPath);
List<File> fileList = new ArrayList<File>();
File[] files = filePath.listFiles();
List<File> fileandFolderList = Arrays.asList(files);
for (File file : fileandFolderList) {
fileList.add(file);
if (file.isDirectory()) {
List<File> innerFileList = getFileList();
fileList.addAll(innerFileList);
}
}
return fileList;
}
}
ありがとうございます。
再帰を使用している場合、定義された停止ポイントが必要です。これは通常、再帰的メソッドに渡される引数によって決まります。引数を取らない再帰的メソッドがある場合は、問題がある可能性があります。 –
同意します!最初は私のgetFileList()はString引数を持っていましたが、後者は、クラスにmain()メソッドを追加し、長期的には再帰メソッドでハードコードした場合、ユーザーが答えられると便利だと思いました... :-( – tusar
@aioobeあなたが過去に私を助けて以来、私はあなたに私の別の問題を見てくださいお願いします。これに関連していませんhttp://stackoverflow.com/q/8937158/778687 – tusar