在Java中使用资源文件

gen*_*mx6 1 java deployment resources file embedded-resource

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

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

这就是我所做的.创建一个新的资源文件,因为我使用NetBeans,我可以在它看起来像这样导航器中的文件标签下看到它的位置:

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

    }
}
Run Code Online (Sandbox Code Playgroud)

Mad*_*mer 5

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

"我假设JAR文件不是最好的方式"并非如此.提供一种特定于OS的方法来启动程序很有用,但它并不总是最好的解决方案.

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

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

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

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

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

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

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