使用独立于文件位置的资源

时间:2012-10-14 11:19:27

标签: java url jar classloader embedded-resource

这是我的目录结构
XYZProject

  • build
  • dist
  • nbproject
  • src

我正在研究netbeans 现在我有一个名为ABC.txt的文件 我想把它装在jar文件中 现在我做了以下操作:在源包下创建一个名为Resources的新文件夹,并将文件ABC.txt放入其中。

XYZProject

-- src  
  |
  -- Resources  
     |
     -- ABC.txt

现在我想独立于文件位置访问此文件。所以我按照一些教程做了这个,

URL url = XYZProject.class.getClassLoader().getResource("Resources/ABC.txt");
String urlStr = urlStr.getFile().replaceAll("%20", " ");
System.out.println(urlStr);
BufferedReader reader;
try {
    reader = new BufferedReader(new FileReader(urlStr)); .....
} catch (FileNotFoundException e) {...}

现在,当我通过netbeans运行代码,即F6和tada WORKS !!! 但是当试图运行jar时,它找不到文件。它抛出FileNotFoundException
如何通过netbeans和java -jar访问运行它的jar中的文本文件?
此外,我不知道为什么我的网址中有%20而不是空格。

输出运行VIA NB

/D:/.../.../.../.../XYZProject/build/classes/Resources/ABC.txt  

输出正在运行的VIA java -jar

file:/D:/.../.../.../.../XYZProject/dist/XYZProject.jar!/Resources/ABC.txt

1 个答案:

答案 0 :(得分:1)

Jar中的资源不是File 。必须通过URLInputStream访问它。

我可能会使用URL - > InputStream - > InputStreamReader - > BufferedReader(来自记忆,未经测试)。