我希望能够列出当前目录中的文件。我做了一些应该工作但不会返回所有文件名的内容。
File dir = new File(".");
File[] filesList = dir.listFiles();
for (File file : filesList) {
if (file.isFile()) {
System.out.println(file.getName());
}
}
它返回.classpath
,但我很确定我在这个文件夹中有其他java文件。也许当前文件夹的点符号不正确?
答案 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)
你可能会看到类似的内容:
这里感兴趣的是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());
}
}
}