2017-08-27 117 views
-3

我正在编写Spring Maven Web应用程序。 在我的代码中,我试图对位于classpath的文件和目录执行各种操作。Java在空目录上执行class.getResource时获得空值

对于前 - 下面片段来获得目录

{ 
    URL resource = FileUtil.class.getResource(inboxLocation); //getting null when directory is empty 
    File directory = new File(resource.getPath()); 
    Collection<File> files = FileUtils.listFiles(directory, TrueFileFilter.TRUE, null); 
    ArrayList<File> fileArray = new ArrayList<>(files); 
    return fileArray.subList(0, Math.min(batchSize, fileArray.size())); 
} 

这工作得很好,当inboxLocation(目录)已经有一个文件中的所有文件。 但是,当inboxLocation为空时,我在资源中获取空值。

还有另一个功能,我尝试将文件移动到目录.. 即使该方法在目录为空时失败。

我正在使用IntelliJ作为开发平台。

能就如何处理这种情况下任何人的帮助.. 任何帮助表示赞赏

+4

IntelliJ与你的问题无关。你应该用流而不是文件来思考。您的网络应用程序不应该依赖对文件系统的访问。 – duffymo

+0

我同意..我这样做只是为了设置正确的测试env – rajvishal777

+0

为什么你必须使用'getResource'来获取'File'对象? – aristotll

回答

1

的getResource的目的是read resources from a JAR file。请注意,a resource is data (images, audio, text, and so on),目录不是资源。使用Files.walk来获取目录条目的流。

+0

隐含的限制是不正确的。链接的资源正在讨论Web容器环境中的资源加载,所以涉及的类加载器自然会成为Web容器的,并且将按照JEE标准jar,war或ear档案进行搜索。请参阅[Class#gerResource](https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResource%28java.lang.String%29) – alphazero