在Java中使用资源文件

时间:2012-10-29 01:25:37

标签: java file deployment resources embedded-resource

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

  1. 我希望将我的程序分发给其他人,我假设JAR文件不是最好的方法。我可能会通过“转换为exe”来实现这个好习惯吗?有什么限制?
  2. 如果我转换为exe,它会保留资源文件吗?
  3. 我其实只是想尝试使用资源文件。此文件是一个文本文件,只保存某些文件的用户目录,因此每次打开程序时都不需要设置它们。这是最好的解决方法吗?
  4. 如何在代码本身中引用资源文件?
  5. 这就是我所做的。 创建了一个新的资源文件,因为我正在使用Netbeans,我可以在导航器的files选项卡下看到它的位置,如下所示:

    • Mainproject
      1. 构建
      2. MyClass的
      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)
      {
    
        }
    }
    

2 个答案:

答案 0 :(得分:5)

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

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

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

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

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

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

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

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

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

答案 1 :(得分:0)

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

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

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