1

这是我的目录结构
XYZProject

  • 建造
  • 距离
  • NB项目
  • 源代码

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

XYZ项目

-- 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 中的文本文件?
我也不知道为什么在我得到的 url 中有一个 %20 而不是空格。

输出运行 VIA NB

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

输出运行 VIA java -jar

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

1 回答 1

1

Jar 中的资源不是File. 它必须由URLor访问InputStream

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

于 2012-10-14T11:29:49.573 回答