簡體   English   中英

無法使用classLoader.getResource(fileName).getFile()獲取文件

[英]unable to get file using classLoader.getResource(fileName).getFile()

我在eclipse中創建了一個Maven Web應用程序項目,該項目在進行此操作的機器上運行良好。 但是當將此項目導入eclipse中的其他計算機時,它在獲取文件時給了我這個異常:

例外:D:\\ Eclipse%20Workspace.metadata.plugins \\ org.eclipse.wst.server.core \\ tmp0 \\ wtpwebapps \\ example \\ WEB-INF \\ classes \\ file.txt(系統找不到指定的路徑)

我正在使用此代碼來獲取文件:

public File getFile (String fileName) {
    //Get file from resources folder
    ClassLoader classLoader = getClass().getClassLoader();
    File file = new File(classLoader.getResource(fileName).getFile());
    return file;
}

該文件位於項目的資源文件夾中:

D:\\ Eclipse工作區\\情感分析\\ example \\ src \\ main \\ resources

我走到顯示異常消息的路徑,發現該文件已經存在過。

URL的getFile方法不會將URL轉換為文件。 它只是返回主機和端口之后的URL部分。 URL需要百分號轉義許多字符(包括空格),因此您不能可靠地將URL的路徑部分用作文件名。 實際上,例外情況是完全告訴您的:您的計算機上沒有名為D:\\Eclipse%20Workspace.metadata.plugins目錄。 (繼續檢查。)

擁有URL時,您根本不應嘗試將其轉換為File。 不用了 使用URL的openStream方法 ,您可以像讀取文件一樣輕松地讀取URL。

但這並不是必須的,因為您還可以使用getResourceAsStream方法完全跳過URL並獲得可讀的InputStream:

InputStream stream = getClass().getResourceAsStream("/file.txt");

代碼在與此代碼類駐留位置相同的目錄中查找文件。 該代碼的包結構是什么? 同樣,只有Maven將資源復制到類路徑中。 因此,如果您使用Eclipse進行編譯和運行,則資源文件夾將不會自動復制。

暫無
暫無

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

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