Java无法识别JAR中的文件

时间:2011-03-07 07:53:33

标签: java file jar

我的java程序的JAR文件中有一个.csv数据库文件。在我打包之前,该程序在NetBeans IDE中运行良好,但是一旦我这样做,它就会拒绝相信文件在其中,即使我打印出它正在查看的路径并解压缩JAR以确保我告诉它寻找合适的地方。我如何让Java看到这个?

  try
  {
    String path = Main.class.getResource("/items.csv").getPath();
    db = new java.io.File(path);
    loadValues(db);
  }
  catch (java.io.FileNotFoundException ex1)
  {
    System.out.println("Could not find database file (" + ui.db + ").");
  }

3 个答案:

答案 0 :(得分:5)

不要为资源创建File对象,因为可能没有FileFile代表文件系统上的“真实”文件。就操作系统而言,.jar文件中的“文件”只是一些字节。

您需要使用getResourceAsStream()获取InputStream并从中读取。

答案 1 :(得分:2)

将它打包到jar文件中后,它不再是直接文件..

尝试使用InputStream

阅读
InputStream input = getClass().getRessourceAsStream("/classpath/to/my/items.csv");

另见

答案 2 :(得分:1)

使用Class.getResourceAsStream加载jar中的文件:

    InputStream is = Main.class.getResourceAsStream("/items.csv");
    loadValues(is);

loadValues方法更改为InputStream而不是File