基本上,我有一个包含一些文件的目录。在运行配置中,我试图将目录作为这样的争论:\(workspacename\directory
。然后,以下代码应创建该目录中所有文件的列表:
String directory = args[1];
File folder = new File(directory);
File[] allFiles = folder.listFiles();
ArrayList<File> properFiles = null;
for (File file: allFiles) {
if(file.getName().endsWith(".dat")){
properFiles.add(file);
}
}
我面临的问题是,由于某种原因,allFiles为空。
答案 0 :(得分:5)
我会猜测你的问题可能是什么:
如果您的参数是相对路径(而不是绝对路径,例如以“/”或“c:/”开头),请记住文件将相对于应用程序的工作目录。< / p>
所以new File(directory)
将相对于应用程序的启动位置。在Eclipse中,默认工作目录位于项目中。因此,如果您的项目位于工作区的顶层,那么它将类似于workspacename/project
。
您可以尝试打印folder.getAbsolutePath()
,folder.exists()
和folder.isDirectory()
来帮助诊断您的问题。
答案 1 :(得分:0)
如果目录实际上不存在(除其他外),javadocs说listFiles()
将返回null
:
如果此抽象路径名不表示目录,或者发生I / O错误,则返回null。
通过验证(调试器或printf)args[1]
值进行调试。
此外,您可能尝试使用替换变量在路径中插入工作空间位置。如果是这样,您需要再次验证(通过调试器或printf)占位符是否正确替换。