【问题标题】:Java InputStream fails to read file from within JARJava InputStream 无法从 JAR 中读取文件
【发布时间】:2013-02-20 07:19:17
【问题描述】:

我正在尝试从我的可执行 .jar 文件中读取一个文件,但它不断得到空值。

我有这个代码:

public DanceEventTicketScanner(String txtfile){
    sv = new ScannerView(this);
    findcode = false;
    InputStream is = this.getClass().getResourceAsStream("/resources/copy.csv");
    if (is == null) JOptionPane.showMessageDialog(null, "Resource not located.");
}

在 JAR 文件中,我(正常)有一个文件夹,其中包含我的所有 .class 文件,并且在同一目录中有一个名为 resources 的文件夹,其中包含 copy.csv 文件。

但此代码无法识别该文件。

有人有什么想法吗?

【问题讨论】:

标签: java jar inputstream


【解决方案1】:

去掉第一个斜杠:

InputStream is = this.getClass().getResourceAsStream("resources/copy.csv");

【讨论】:

    【解决方案2】:

    getClass().getResourceAsStream(..) 将使用相对于类的路径(因此包括包目录)。 getClass().getClassLoader().getResourceAsStream(..) 将使用绝对路径。因此,更改您的代码并获取类加载器,它就会工作。

    【讨论】:

    • 所以如果我使用你说的第二个,我仍然只是给“/resources/copy.csv”作为参数吗?
    • 这个答案不正确。请参阅 Javadoc。如果指定了绝对路径,它将使用它。
    猜你喜欢
    • 2018-12-14
    • 2018-01-18
    • 2014-06-07
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 2016-03-22
    • 2017-10-07
    • 1970-01-01
    相关资源
    最近更新 更多