我制作了一个用于学术目的的小型 Java 程序,它的主要重点是读取一些 .txt 文件并将信息呈现给用户。这些文件位于 src 文件夹下的资源文件夹中。该程序在从 Eclipse 启动时按预期运行。使用 Launch4j 应用程序,我能够成功创建一个运行良好且符合预期的 exe,直到我尝试读取资源文件夹中的 .txt 文件,该文件似乎无法访问。我猜当我启动 exe 时,运行时路径会更改为创建 exe 的位置,因此我在桌面文件夹中创建了程序并在程序中指定了此路径,但这似乎并没有解决问题.作为替代方案,我将 .txt 文件移出程序,并再次在桌面文件夹中使用上述 .txt 文件创建了 exe,将程序链接到此路径,但它再次不起作用。用于获取 .txt 文件的命令是:Files.readAllLines(Paths.get(doc)).get(line)并且 doc 只是预期的 .txt 文件的路径。值得注意的是,我之前没有 Java 方面的经验,在整个程序开发过程中,我尽力使用我完全理解的命令并使其尽可能简单。我希望解决方案可以沿着这些路线!我非常有信心这一定是一个菜鸟错误,但我似乎无法在任何地方找到解决这个特定问题的方法。
1 回答
潇湘沐
TA贡献1816条经验 获得超6个赞
Eclipse 中文件的路径与 .exe 或 JAR 文件中的文件路径不同。
我会让其他用户解释它,因为我很懒:p
与其尝试将资源作为文件寻址,不如让 ClassLoader 通过 getResourceAsStream 返回资源的 InputStream:
InputStream in = getClass().getResourceAsStream("/file.txt"); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 只要 file.txt 资源在类路径上可用,那么无论 file.txt 资源是在 classes/ 目录中还是在 jar 中,这种方法都会以相同的方式工作。
URI 不是分层的,因为 jar 文件中资源的 URI 看起来像这样:file:/example.jar!/file.txt。您无法像读取普通的旧文件一样读取 jar(zip 文件)中的条目。
原帖在这里,所有功劳归功于其作者。
修复您的 URL 应该可以让您在使用 .exe 时读取该文件。
为更正而编辑。感谢@VGR(见评论)纠正我的错误。
添加回答
举报
0/150
提交
取消