![](/img/trans.png)
[英]getResourceAsStream(String) with full path returns null but file exists
[英]JAVA getResourceAsStream() real path string interpretation of a file
我正在使用NetBeans 8.0.2(我知道已經有v8.2,但是對我來說有很多錯誤,所以我又回到了v8.0.2),並且我需要一個指向.obj文件的字符串路徑來獲取參數屬性,例如這個:
api.parameter("filename", "obj/someFile.obj");
上面的示例在我的應用程序的早期版本中起作用,在該應用程序中,我將.obj文件放置在與.jar文件位於同一目錄中的名為“ obj”的文件夾中,但是現在,我想將其包含在JAR本身中,碼:
api.parameter("filename", MyClass.class.getResourceAsStream("/someFile.obj").toString());
...它不再起作用,因為路徑字符串解釋不是文件的路徑,它看起來像這樣:
java.io.BufferedInputStream@215d7ea7
...當然,在我的代碼中期望有類似正常路徑字符串的地方,我會以這種偽代碼的方式說一些話:
api.parameter("filename", "<this.jar>/someFile.obj");
因此,在對StackOverflow進行了一些擺弄之后,我發現了一些代碼,我認為它們實際上可以使我直接將該路徑作為字符串放置:
URL jar = MyClass.class.getProtectionDomain().getCodeSource().getLocation();
api.parameter("filename", jar + "/someFile.obj");
但是令人驚訝的是,盡管我多次檢查該文件是否確實存在於我的內置jar文件中(是的,它在根目錄中),但仍然給我這個錯誤:
java.io.FileNotFoundException: file:\Z:\_JAVA_\MyProject_0_018\dist\bin\myjar.jar\someFile.obj <The filename, directory name, or volume label syntax is incorrect>
而且我100%確信文件名正確,並且也將其放置在jar文件的根目錄中。
還是實際上認為myjar.jar
是目錄?
我拼命地試圖找到解決此“路徑字符串”混亂的方法。
您的保護域的代碼源位置可能不會返回您期望的位置。
您應該直接使用getResource(name)
,如下所示:
URL locator = MyClass.class.getResource("someFile.obj");
api.parameter("filename", locator.toString());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.