[英]Path not working; using File.separator
我正在使用:
我很好奇為什么這條路不起作用:
public static final String ZPL_TEMPLATE =
File.separator
+ "templates"
+ File.separator
+ "Template.txt";
但是這個很好用:
public static final String TEMPLATE = "/templates/Template.txt";
這是使用位置(在另一個軟件包中):
InputStream is = this.getClass().getResourceAsStream(TEMPLATE);
編輯:例外:
...
java.lang.NullPointerException: null
at java.io.Reader.<init>(Reader.java:78)
at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
...
Becaseuse在Win 7上的文件分隔符為'\\',如文檔中針對getResourceAsStream所述
在委派之前,使用以下算法從給定資源名稱構造絕對資源名稱:
如果名稱以'/'('\\ u002f')開頭,則資源的絕對名稱是名稱中'/'之后的部分。 否則,絕對名稱的格式如下:modified_package_name / name,其中Modifyed_package_name是此對象的程序包名稱,用“ /”代替“。”。 ('\\ u002e')。
當訪問內部資源時,就像使用getResouceAsStream
,文件分隔符必須為/
。
我相信您在Windows計算機中,因此文件分隔符為\\
。
有關更多信息,請參見加載資源時如何使用文件分隔符 。
getResourceAsStream
期望將資源名稱作為參數,而不是文件路徑。
無論文件系統如何,java中的資源名稱都用正斜杠/
分隔(資源名稱/路徑表示類路徑上的路徑,而不是文件系統上的路徑)。
因此,您不能使用文件系統分隔符來構建資源名稱。 在Windows上,它將是反斜杠\\
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.