【发布时间】:2013-12-05 19:23:15
【问题描述】:
我做了这个简单的实验来列出父目录中的所有文件/目录。 通过在 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'。
【问题讨论】:
-
你从哪个目录运行它?
-
我首先从 Eclipse 运行它(这将是“JavaProject”导演),后来还尝试从“JavaProject”目录中的 cmd 运行。这两种情况我得到相同的结果。
-
但是当你从eclipse运行时,它肯定是从“bin”目录运行的吗?所以“../JavaProject”实际上不会存在?这就是为什么您从
isDirectory()返回错误的原因。
标签: java eclipse file-io java-io