gpt4 book ai didi

java - 使用相对路径访问并行资源文件夹中的文本文件

转载 作者:行者123 更新时间:2023-12-01 16:51:50 25 4
gpt4 key购买 nike

您好,感谢您花时间查看此问题。

我在访问与 src 文件夹平行的文件夹中的文本文件时遇到问题(结构见下文)。

我找到的最接近的解释是:https://www.cis.upenn.edu/~matuszek/cit597-2006/Pages/finding-files.html我遇到过很多类似的问题,但不幸的是,我没有一个可以从中推断出这个问题的答案。

我知道我可以使用绝对路径,但我想确保该软件可以在其他人的计算机上运行,​​所以这是不行的。因此,我试图让它与相对路径一起工作。

作为奖励,这里建议:https://coderanch.com/t/464197/java/java/Reading-files-directory-giving-relative为了让这段代码在 JAR 文件中工作,我必须使用 getResourceAsStream()。有人可以建议一下吗?

我正在尝试从 RecipeReader.java 中访问 Recipes.txt,这是迄今为止我的代码:

        Class thisClass = this.getClass();
ClassLoader loader = thisClass.getClassLoader();
URL recipeFileURL = loader.getResource("Recipes.txt");
String path = recipeFileURL.getPath();
path.replaceAll("%20", " ");
BufferedReader input = new BufferedReader(new FileReader(path));

类似地写入同一个文件:

        Class thisClass = this.getClass();
ClassLoader loader = thisClass.getClassLoader();
URL recipeFileURL = loader.getResource("Recipes.txt");
String path = recipeFileURL.getPath();
path.replaceAll("%20", " ");
BufferedWriter output = new BufferedWriter(new FileWriter(path));

预先感谢您的帮助!

罗宾

Eclipse Tree View

最佳答案

如果这些文件捆绑在您的 jar 文件中,那么它们就不再是文件了:文件系统在运行时不包含这些文件,因为它们嵌入在 jar 文件中。因此您可能使用文件 IO 来读取它们。 new FileReader(path) 没有意义。

您似乎还想修改这些资源的内容。如果资源嵌入到jar文件中,那绝对不可能。

因此,您需要考虑您真正想要做什么,以及如何向最终用户提供应用程序并安装它。

如果文件包含应用程序所需的静态只读资源,则应将它们捆绑在 jar 文件中,并使用类加载器读取。

如果文件是数据,必须由应用程序读取和保存,就像文本编辑器所做的那样,那么向应用程序提供它们可能没有意义:只需询问用户在哪里加载/保存文件。

如果它们是需要由应用程序透明地加载和保存的首选项,那么您可以从位于用户主目录中的 .myApp.prefs 文件加载和保存它们。

关于java - 使用相对路径访问并行资源文件夹中的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38805665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com