相关疑难解决方法(0)

将Java资源作为文件访问

我正在尝试从类路径/ JAR文件中访问资源作为File对象.我知道它是使用InputStream对象的首选方法,但我使用的是需要File对象的外部库(WorldEdit).

这是我的代码:

InputStream templStream = "".getClass().getResourceAsStream("/res/template.prom");
System.out.println("templateStream: " + templStream.toString());
File templFile = new File("".getClass().getResource("/res/template.prom").toURI());
System.out.println("templateFile: " + templFile.canRead());
Run Code Online (Sandbox Code Playgroud)

现在,当我还在Eclipse中时,访问资源的两种方式都可以完美地工作并产生这样的输出:

templStream: java.io.BufferedInputStream@746d1683
templFile: true
Run Code Online (Sandbox Code Playgroud)

但是在将代码导出到JAR存档后,代码将失败:

templStream: sun.net.www.protocol.jar.JarURLConnection$JarURLInputStream@47aa261b
Exception in thread "main" java.lang.IllegalArgumentException: URI is not hierarchical
    at java.io.File.<init>(File.java:392)
    at SMCToPROM.main(SMCToPROM.java:101)
Run Code Online (Sandbox Code Playgroud)

所以我一直没有成功地寻找一种方法来直接访问资源作为文件,或者使用InputStream并将该InputStream转换为文件.

最糟糕的情况是回退解决方案是将InputStream复制到文件系统上的文件,然后打开该文件,但我希望这不是必要的.

java resources inputstream file

5
推荐指数
1
解决办法
6075
查看次数

在Java中使用资源文件

我刚开始使用"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)

java deployment resources file embedded-resource

1
推荐指数
1
解决办法
9839
查看次数