这应该是一个非常简单的问题,但Google +我的代码无法解决。
在Windows上的Eclipse中,我希望我的程序能够查看某个文件夹。该文件夹直接位于Project文件夹内,与.settings
,bin
,src
等处于同一级别。我的文件夹名为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的字符串中,但我不确定是什么问题?
答案 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”。