java - isDirectory() 方法在 java 包 'false' 上调用时返回 'com'

标签 java eclipse file-io java-io

我做了这个简单的实验来列出父目录中的所有文件/目录。 这是通过在 eclipse 中创建一个名为“JavaProject”的 java 项目和在 src/com 下创建一个类“Temp.java”来实现的。代码如下:

 public class Temp {
public static void main(String[] args) {

    search("../JavaProject");
}

public static void search(String dName) {
    String[] files = new String[100];
    File search = new File(dName); // make file object
    if (!search.isDirectory()) {
        return;
    }
    files = search.list(); // create the list
    for (String fn : files) {// iterate through it
        System.out.print("  " + fn);
        File temp = new File(fn);
        if (temp.isDirectory()) {
            search(fn);
        }
        System.out.println();
        }
    }
} 

文件结构如下:

  • JavaProject(目录)

    • .classpath(文件)

    • .project(文件)

    • .settings(目录)

      • org.eclipse.jdt.core.prefs(文件)
    • bin(目录)

      • com(文件)

        • Temp.class(文件)
    • src(目录)

      • com(目录)

        • Temp.java(文件)

当我运行上面的程序时,它会给出以下输出:

 .classpath

 .project

 .settings  org.eclipse.jdt.core.prefs

  bin  com

  src  com

我不明白为什么它不打印 com 文件夹内的 .java 文件和 .class 文件。 当我尝试调试时,“com”上的文件对象对于 isDirectory() 和 isFile() 方法都返回“false”。

最佳答案

当它到达“com”目录时,您的代码正在执行以下操作:

File temp = new File("com");

由于您没有指定任何路径,因此这将被视为相对于当前目录,而当前目录不是包含“com”的目录。

你应该使用类似的东西:

File temp = new File(parent, fn);

其中 parent 是父目录的 File 对象。

关于java - isDirectory() 方法在 java 包 'false' 上调用时返回 'com',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20119017/

相关文章:

java - AndEngine gles2 物理

java - 迭代时从 HashSet 中删除元素

java - 如何在我的应用程序中实现 Memcache

java - 在忽略 Object.toString() 的同时在 Eclipse 中查找 MyClass.toString() 的引用

eclipse "Waiting for virtual machine to exit"

php - 在php中尚不存在的文件夹中创建文件

字符数组填充

matlab - 将单元格元素打印到文本文件

java - 从 Junit 4 迁移到 Junit 5 - 测试用例被跳过

java - 从 eclipseoxy 下载插件时出错