返回目录中的文件列表

时间:2013-11-22 21:33:58

标签: java

这是我正在处理的代码

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个文件。

1 个答案:

答案 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;
    }
希望它有所帮助..