这是我正在处理的代码
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class TestFileSearch {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new TestFileSearch();
}
public TestFileSearch() {
File parentPath = new File("D:/Dir/webclient/WebContent/en");
List<String> files = list(parentPath);
for (String file : files) {
System.out.println(file);
}
}
protected List<String> list(File parent) {
return listFiles(parent, parent);
}
protected List<String> listFiles(File parent, File folder) {
List<String> lstFiles = new ArrayList<String>();
if (folder.isDirectory()) {
File[] files = folder.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
// lstFiles.addAll(listFiles(parent, file));
File[] filesinsidefolder=file.listFiles();
} else {
String path = file.getPath();
String offset = parent.getPath();
path = path.substring(offset.length());
lstFiles.add(path);
}
}
}
}
return lstFiles;
}
}
我在这里面临一个问题。我正在检查它是否是一个目录,然后我想填充目录中的所有文件,如下所示:
if (file.isDirectory()) {
File[] filesinsidefolder=file.listFiles();
}
但是,filesinsidefolder
变量中没有任何内容被填充,而我知道文件夹中有大约100个文件。
答案 0 :(得分:0)
你永远不会填充它,因为你提供的路径中没有任何子文件夹,无论如何变量File[] filesinsidefolder=file.listFiles();
声明一旦填充将不会被存储,您将松开子文件夹列表。在main方法上使其全局化,检查是否为空并且在dinstically中添加\循环到lstFiles数组。
或者您可以完全避免使用filesinsidefolder变量:
public static void main(String[] args) {
new a();
}
public a() {
File parentPath = new File("D:/Dir/webclient/WebContent/en");
List<String> files = list(parentPath);
for (String file : files) {
System.out.println(file);
}
}
protected List<String> list(File parent) {
return listFiles(parent, parent);
}
protected List<String> listFiles(File parent, File folder) {
List<String> lstFiles = new ArrayList<String>();
if (folder.isDirectory()) {
File[] files = folder.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
for (File fileTREE : file.listFiles()) {
lstFiles.add(fileTREE.toString());
}
} else {
String path = file.getPath();
String offset = parent.getPath();
path = path.substring(offset.length());
lstFiles.add(path);
}
}
}
}
return lstFiles;
}
希望它有所帮助..