如何列出当前目录中的文件?

时间:2013-03-18 16:54:48

标签: java file directory

我希望能够列出当前目录中的文件。我做了一些应该工作但不会返回所有文件名的内容。

File dir = new File(".");
File[] filesList = dir.listFiles();
for (File file : filesList) {
    if (file.isFile()) {
        System.out.println(file.getName());
    }
}

它返回.classpath,但我很确定我在这个文件夹中有其他java文件。也许当前文件夹的点符号不正确?

7 个答案:

答案 0 :(得分:23)

试试这个,检索文件夹和子文件夹中的所有文件

public static void main(String[]args)
    {
        File curDir = new File(".");
        getAllFiles(curDir);
    }
    private static void getAllFiles(File curDir) {

        File[] filesList = curDir.listFiles();
        for(File f : filesList){
            if(f.isDirectory())
                getAllFiles(f);
            if(f.isFile()){
                System.out.println(f.getName());
            }
        }

    }

仅检索文件/文件夹

public static void main(String[]args)
    {
        File curDir = new File(".");
        getAllFiles(curDir);
    }
    private static void getAllFiles(File curDir) {

        File[] filesList = curDir.listFiles();
        for(File f : filesList){
            if(f.isDirectory())
                System.out.println(f.getName());
            if(f.isFile()){
                System.out.println(f.getName());
            }
        }

    }

答案 1 :(得分:9)

  

当前文件夹的点符号可能不正确吗?

打印File.getCanonicalFile()的结果以检查路径。

  

有人可以向我解释为什么src不是当前文件夹吗?

您的IDE在调用JVM时设置类路径。

E.G。 (到达Netbeans)如果选择菜单File | Project Properties (all classes)你可能会看到类似的内容:

Netbeans project options

这里感兴趣的是Working Directory

答案 2 :(得分:3)

您应该验证new File(".")是否真正指向您认为指向的位置 - .classpath建议某些Eclipse项目的根目录....

答案 3 :(得分:2)

快速窥探这个,但这看起来应该有效。我还没有测试过它。

    File f = new File("."); // current directory

    File[] files = f.listFiles();
    for (File file : files) {
        if (file.isDirectory()) {
            System.out.print("directory:");
        } else {
            System.out.print("     file:");
        }
        System.out.println(file.getCanonicalPath());
    }

答案 4 :(得分:1)

您的代码没有任何问题。它应列出指定目录直接包含的所有文件和目录。

问题很可能是以下之一:

  • "."目录不是您期望的目录。 "."路径名实际上是指JVM的“当前目录”或“工作目录”。您可以打印"."

  • 来验证dir.getCanonicalPath()实际上是哪个目录
  • 您误解了dir.listFiles()返回的内容。它不会返回dir下面的树中的所有对象。它只返回dir直接的对象(文件,目录,符号链接等)。

".classpath"文件表明您正在查看Eclipse项目目录,而Eclipse项目通常使用"./src"等子目录中的Java文件进行配置。我不希望在"."目录中看到任何Java源代码。


  

有人可以向我解释为什么src不是当前文件夹吗?“

假设您在Eclipse中启动了一个应用程序,那么当前文件夹默认到项目目录。您可以通过Launcher配置向导中的一个面板更改默认的当前目录。

答案 5 :(得分:0)

如果您独立编译并运行代码(从命令行),您的代码会给出预期的结果。正如eclipse中每个项目默认工作目录是项目目录,这就是你得到这个结果的原因。

您可以在java中将user.dir属性设置为:

   System.setProperty("user.dir", "absolute path of src folder");

然后它会给出预期的结果。

答案 6 :(得分:0)

我在本地目录中使用了这个答案(例如E://)它对第一个目录和seconde目录工作得很好,输出发出java空指针异常,在搜索我发现的原因之后问题是由隐藏目录创建的,这个目录是由windows创建的 要避免这个问题,请使用此

public void recursiveSearch(File file ) {
 File[] filesList = file.listFiles();
    for (File f : filesList) {
        if (f.isDirectory() && !f.isHidden()) {
            System.out.println("Directoy name is  -------------->" + f.getName());
            recursiveSearch(f);
        }
        if( f.isFile() ){
            System.out.println("File name is  -------------->" + f.getName());
        }
    }
}