【问题标题】:Using getResourceAsStream after build isn't working?构建后使用 getResourceAsStream 不起作用?
【发布时间】:2014-05-15 22:18:39
【问题描述】:

在我在 netbeans 中的 Java 项目中,我得到一个文本文件内容来使用这个填充一些内部数据结构:

InputStream PFile = this.getClass().getResourceAsStream("../../IISP Details/IISP.txt"); // Get File to create IISP's
    String[] PStringArray = new Scanner(PFile, "UTF-8").useDelimiter("\\A").next().split("\\r?\\n");

但是当我清理和构建我的项目时,它不起作用。

想法?

编辑:

更多信息...

代码在“loadMaster”类的 cs.analysisr.gui.master 包中调用。

该文件位于 cs.analysisr.IISPDetails 中。

我可以说它没有找到文件 - 有没有其他选择?或者无论如何让文件在我构建时与它捆绑在一起?

【问题讨论】:

  • 我根本不希望 ..getResourceAsStream 工作。它用于查找在类路径而不是“旁边”的资源。
  • 理念:精确地定义发生的事情。告诉你如何运行你的应用程序,从哪里加载类,包含此代码的类名是什么,资源所在的位置。伊恩·罗伯茨是对的。 .. 在 getResourceAsStream() 中不起作用。使用以/ 开头的绝对路径,从类路径的根目录到您的文件。
  • @JBNizet 抱歉,您能否详细说明绝对路径的外观?
  • 如果文件在cs.analyser.IISPDetails包中,那么你应该使用/cs/analyser/IISPDetails/IISP.txt
  • 假设文件是​​一个类,位于一个包中,您要导入它。您将使用import com.foo.blah.IISP Details.IISP.txt。用斜杠替换每个点分隔包,并准备一个斜杠。路径将变为/com/foo/blah/IISP Details/IISP.txt。在包名称中包含空格是一个非常非常糟糕的主意。不要那样做。

标签: java netbeans getresource


【解决方案1】:

试试这个

InputStream PFile = this.getClass().getResourceAsStream("IISP.txt"); // Get File to create IISP's
String[] PStringArray = new Scanner(PFile, "UTF-8").useDelimiter("\\A").next().split("\\r?\\n");

并将 IISP.txt 添加到它在 CLASSPATH 中的位置。

不知道类路径? http://docs.oracle.com/javase/tutorial/essential/environment/paths.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-05
    • 2016-03-04
    • 2020-04-30
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    相关资源
    最近更新 更多