在Java中使用资源文件

我刚开始使用“Java资源文件”,我有几个问题……

  1. 我希望将我的程序分发给其他人,我假设JAR文件不是最好的方法。 我可能会通过“转换为exe”来实现这个好习惯吗? 有什么限制?
  2. 如果我转换为exe,它会保留资源文件吗?
  3. 我其实只是想尝试使用资源文件。 此文件是一个文本文件,只保存某些文件的用户目录,因此每次打开程序时都不需要设置它们。 这是最好的方式吗?
  4. 你如何在代码本身中引用资源文件?

这就是我所做的。 创建了一个新的资源文件,因为我使用的是Netbeans,我可以在导航器的files选项卡下看到它的位置,如下所示:

  • Mainproject
    1. 建立
    2. 我的课
    3. 资源
      • directories.txt

这是我试图访问它的方式,但是当我调试它时会返回null。

private void getPaths()//todo { try { InputStream is = getClass().getResourceAsStream("/resources/directories.txt"); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line; while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); isr.close(); is.close(); } catch(Exception e) { } } 

“转换为EXE”只是说“将Jar文件包装到可执行容器中”的一种奇特方式

“我假设JAR文件不是最好的方式”并非如此。 很高兴提供一种特定于操作系统的方法来启动程序,但它并不总是最好的解决方案。

“有什么限制?” 。 好吧,首先,你将自己限制在一个平台上。 对于Mac,您需要将应用程序捆绑到“app”包中。 对于linux,我认为大多数人都提供脚本来启动他们的代码。

您也可以将自己限制在特定的位深度。 如果您提供的只是x32位可执行文件,那么您将只能在x32位环境中运行。 这可能不是问题,但是你开始限制可用内存……

所以是的,通常,您的资源文件是安全的。

通常嵌入资源文件。 您在第3部分中描述的内容更类似于配置文件。 此文件需要存储在文件系统(exe / jar的外侧),以便轻松更新。

“你如何在代码本身中引用资源文件?”

对于嵌入式资源,您需要先使用getClass().getResource(...) 。 对于你的配置文件,我会像任何其他文件一样说…

我还要看看部署有关部署Java程序的建议机制的一些想法,

Jar是一种完美的发行格式。 您可以转换为exe,但用户仍然需要安装JVM才能运行它。 如果安装了JVM并且jar具有正确形成的清单文件,则使用双击执行jar。

您可以从JVM,文本,二进制文件,XML,属性文件等打开任何文件。

要保存用户设置,一个不错的选择是属性文件 – 请参阅http://www.mkyong.com/java/java-properties-file-examples/