1

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

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

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

  • 主要项目
    1. 建造
    2. 班级
    3. 我的课
    4. 资源
      • 目录.txt

这是我尝试访问它的方式,但是当我调试它时它又返回空值。

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)
  {

    }
}
4

2 回答 2

5

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

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

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

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

所以是的,一般来说,你的资源文件是安全的。

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

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

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

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

于 2012-10-29T01:38:11.627 回答
0

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

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

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

于 2012-10-29T01:35:40.880 回答