如何在创建File对象时指定目录?

时间:2012-11-26 03:19:21

标签: java eclipse file formatting directory

这应该是一个非常简单的问题,但Google +我的代码无法解决。

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

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

我正在尝试使用此代码,但它无效 - names[]将返回null。是的,我在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的字符串中,但我不确定是什么问题?

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

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

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

OR

if (names!=null){
   ...
}

答案 2 :(得分:0)

如果您使用

检查了文件的完整路径

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

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