I have a java class for listing the files of a given directory. It works fine with directories with only files and no sub-directories. But if there is a child directory inside, it gives java.lang.StackOverflowError exception. Here is the class along with main() method:
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;
}
}
Thanks for your time.