2012-06-28 63 views
-1

我的情况很简单。 我有这个在我的程序:可以在Eclipse中运行java但不能在cmd中运行java

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

我只想把文件的所有路径从文件夹“输入”到数组。 它通过eclipse运行正常。当我尝试在cmd中执行此操作时,它给了我一个空指针异常。我的Java文件是在这个目录下:

C:\用户\ JHeng \桌面\ java的东西\转换器的\ src

感谢您回应!

如果我把绝对目录中的第一行:

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

当我在Eclipse中运行它,偏食,甚至给了我一个空指针异常的线路提前

System.out.println(listOfFiles.length); 

谢谢!

回答

0

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

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

File folder = new File("c:\\Users\\JHeng\\Desktop\\java stuff\\converter\\src"); 
File[] listOfFiles = folder.listFiles(); 
System.out.println(listOfFiles.length); 
1

问题在于你的工作目录在两种情况下有所不同。

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

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

您可以指定一个绝对路径,以便程序的行为不会取决于它的执行目录吗? (这可能涉及任何硬编码的目录,否则拿起它作为一个配置变量或系统属性)。

如果你不想这样做,那么想必你的程序应该不同的行为取决于在它运行的目录上(例如,如果它为当前目录中的所有文件做某事)。如果这是有意的,那么对于没有称为“输入”的子目录的情况 - 例如,可以简单地进行更好的错误处理检查folder.isDirectory()是否为真,并且如果不输出适当的错误消息。

+0

请参阅问题的更新。 –

相关问题