我做了这个简单的实验来列出父目录中的所有文件/目录。 这是通过在 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/