【问题标题】:File only accessible when placed in a location where it will be erased from the jar文件仅在放置在将从 jar 中删除的位置时才可访问
【发布时间】:2018-02-10 17:57:05
【问题描述】:

我是 NetBeans IDE 的新手,并且在构建 jar 文件后难以访问文件。在阅读了有关该主题的许多帖子后,我决定尝试以下代码:

BufferedReader read = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/file.txt")));

当我的文件放在 .class 文件所在的项目的“build”文件夹中时,这可以正常工作,但这当然是一个问题,因为当 jar 文件在“clean and build”过程中被删除时被建造。我尝试将它放在 src 文件夹、单独的“资源”包中以及目录的根目录中。我还尝试使用“file.txt”和“/src/file.txt”调用 getResourceAsStream(),但它仅在文件与 .class 文件一起使用时才适用于上述配置。任何提示将不胜感激!

【问题讨论】:

  • 您需要在配置资源文件夹的位置查找项目设置。它似乎没有与您的其余代码打包在一起。
  • @alirabiee 非常感谢!原来我把文件放到了错误的资源文件夹中。

标签: java netbeans jar classpath file-access


【解决方案1】:

为什么不在 tomcat bin 中包含您的文件夹并从您的代码中引用该目录。因此 maven clean 不会更改文件,您可以删除、更新文件而无需重新启动应用程序。 (这里我有文件等)

Path: /Users/username/Documents/apache-tomcat-8.5.15/bin/etc 

ArrayList<String> readList = null;
String workingDir = System.getProperty("user.dir");
String fileName = "File.txt";
File file = new File(workingDir+"/etc/" + fileName);
readList = resourceReader.readFile(file.getAbsolutePath());

我有方法 readFile 来解析一些数据并在上面的示例中构建 ArrayList。

阅读System Properties

【讨论】:

  • 我以为一旦你构建了jar文件,你就不能再使用文件对象,而不得不将文件作为InputStream读取?
【解决方案2】:

原来解决方案非常简单...我一直在尝试手动创建资源文件夹,但在构建 jar 时内容不断被删除。相反,我创建了一个资源包并将文件放入 src 文件夹内的自动生成文件夹中,该文件夹将文件打包到 jar 中。感谢大家!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多