2017-08-27 121 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