1

这应该是一个非常简单的问题,但谷歌+我的代码不起作用。

在 Windows 上的 Eclipse 中,我希望我的程序查看某个文件夹。该文件夹直接位于 Project 文件夹内,与 、 、 等处于同一级别.settingsbinsrc的文件夹名为surveys,这是我希望我的File对象指向的文件夹。

我不想指定完整路径,因为我希望它在我的两台计算机上运行。只是我项目中的路径。

我正在尝试这段代码,但它不起作用 -names[]返回为空。是的,我里面有一些文件夹和测试垃圾surveys

File file = new File("/surveys");
    String[] names = file.list();

    for(String name : names)
    {
        if (new File("/surveys/" + name).isDirectory())
        {
            System.out.println(name);
        }
    }

我确定我的错误在我传递给 File 的字符串中,但我不确定出了什么问题?

4

3 回答 3

2

在您的问题中,您没有指定您正在运行的平台。在非 Windows 上,前导斜杠表示绝对路径。最好去掉前面的斜线。尝试这个:

File file = new File("surveys");
System.out.println("user.dir=" + System.getProperty("user.dir"));
System.out.println("file is at: " + file.getCanonicalPath());
String[] names = file.list();

for(String name : names)
{
    if (new File(file, name).isDirectory())
    {
        System.out.println(name);
    }
}

确保在您的运行配置中,程序从项目目录 (user.dir = <projects>)运行

于 2012-11-26T03:38:09.643 回答
1

在使用 file.list() 之前确保你的文件是一个目录,否则你会得到一个讨厌的 NullPointerException。

File file = new File("surveys");
if (file.isDirectory()){
   ...
}

或者

if (names!=null){
   ...
}
于 2012-11-26T07:17:59.077 回答
0

如果您检查了文件的完整路径

System.out.println(file.getCanonicalPath())

画面会立即变得清晰。File.getCanonicalPath 为您提供了完整的路径。请注意,File 规范了路径,例如在 Windows 上,“c:/file”被转换为“C:\file”。

于 2012-11-26T03:55:45.080 回答