-1

我的情况很简单。我的程序中有这个:

File folder = new File("input");
File[] listOfFiles = folder.listFiles();
System.out.println(listOfFiles.length);

我只想将文件夹“输入”中的所有文件路径放到一个数组中。通过使用 eclipse 运行它可以正常工作。当我尝试在 cmd 中执行此操作时,它给了我一个空指针异常。我的java文件在这个目录中:

C:\Users\JHeng\Desktop\java stuff\converter\src

感谢您的回复!

如果我将绝对目录放在第一行:

File folder = new File("C:\\Users\\JHeng\\Desktop\\java stuff\\converter\\src\\input");

当我在eclipse中运行它时,eclipse甚至在该行中给了我一个空指针异常

System.out.println(listOfFiles.length);

提前致谢!

4

2 回答 2

1

问题将是您的工作目录在两种情况下不同。

您在第一行创建的File对象使用相对路径 - 因此,如果从某些位置运行而从其他位置运行失败,它将找到相关文件夹。对listFiles()的调用尤其会:

null如果此抽象路径名不表示目录,或者发生 I/O 错误,则返回。

你可以指定一个绝对路径,这样你的程序的行为就不会依赖于它执行的目录吗?(这可能涉及对目录进行硬编码,或者将其作为配置变量或系统属性拾取。)

如果您不想这样做,那么您的程序可能应该根据运行它的目录而有所不同(例如,如果它要对当前目录中的所有文件执行某些操作)。如果这是有意的,那么您可以简单地对没有称为“输入”的子目录的情况进行更好的错误处理 - 例如检查是否folder.isDirectory()为真,如果不输出适当的错误消息。

于 2012-06-28T17:06:02.157 回答
0

这显然是工作空间的问题。现在试试下面的代码......

但首先要确保您在指定路径上有“src”文件夹...,它在 File 构造函数中作为下面的参数传递。

File folder = new File("c:\\Users\\JHeng\\Desktop\\java stuff\\converter\\src");
File[] listOfFiles = folder.listFiles();
System.out.println(listOfFiles.length);
于 2012-06-28T17:34:36.963 回答