我的情况很简单。 我的程序中有这个:
File folder = new File("input");
File[] listOfFiles = folder.listFiles();
System.out.println(listOfFiles.length);
我只想将文件的所有路径从“input”文件夹放到一个数组中。 通过运行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);
提前致谢!
答案 0 :(得分:1)
问题是你的工作目录在两种情况下有所不同。
您在第一行创建的File
对象使用相对路径 - 因此,如果从某些位置运行,它将找到相关文件夹,而在其他位置失败。特别是对listFiles()的调用将:
如果此抽象路径名不表示目录,或者发生I / O错误,则返回
null
。
您是否可以指定绝对路径,以便程序的行为不依赖于它执行的目录? (这可能涉及对目录进行硬编码,或者将其作为配置变量或系统属性进行选择。)
如果您不想这样做,那么可能是您的程序应该根据其运行目录的不同而表现不同(例如,如果要对当前目录中的所有文件执行某些操作) )。如果是这样的话,那么你可以简单地对没有名为“输入”的子目录的情况进行更好的错误处理 - 例如检查folder.isDirectory()
是否为真,如果没有输出相应的错误消息。
答案 1 :(得分:0)
这显然是工作空间的问题。现在尝试以下代码.......
但首先要确保在指定路径上有“src”文件夹...,它在File构造函数中作为参数传递。
File folder = new File("c:\\Users\\JHeng\\Desktop\\java stuff\\converter\\src");
File[] listOfFiles = folder.listFiles();
System.out.println(listOfFiles.length);