簡體   English   中英

為什么此單元測試說我的目錄不存在?

[英]Why does this unit test say my directory doesn't exist when it does?

這段代碼

URL listofFiles = this.getClass().getResource("someDir");
File f = new File(listofFiles.toString());
File[] files = f.listFiles();

在Tomcat Web服務器環境中的JUnit單元測試中運行。

返回的URL絕對是有效的。 我進入OS X的Finder,執行了“轉到目錄”,粘貼到listofFiles的值中,並查看了目錄中的所有文件。

為什么listFiles()返回null?

帶有String的File構造函數需要一個路徑,而不是URL(的toString)。

使用其他構造函數,例如new File(listofFiles.toURI()) 或者給它一個路徑: new File(listofFiles.getPath())

更新:或(看起來很丑陋) 嘗試兩種File構造函數 ,就像Java大師Kohsuke Kawaguchi所建議的那樣。

如果只有File(URL)構造函數...

根據File.listFiles()的Javadoc

返回:抽象路徑名數組,表示該抽象路徑名表示的目錄中的文件和目錄。 如果目錄為空,則數組為空。 如果此抽象路徑名不表示目錄,或者發生I / O錯誤,則返回null。

您獲得null返回值的事實表明您傳遞給File構造函數的路徑未指向目錄。

我懷疑將URL.toString()的結果傳遞給File構造函數正在構建的路徑不是您認為的那樣。 相反,嘗試類似

File f = new File(listofFiles.toURI());

此外,您可能希望記錄f.getAbsolutePath()的值,以確保讀取的路徑與您期望的路徑相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM