如何访问具有相对路径的 txt 文件?

How can I access a txt file with a relative path?

我正在使用 IntelliJ Idea,我尝试从项目中的不同位置读取一个 txt 文件。我不想使用像 C:/User/... 这样的绝对路径,因为如果项目移动到不同的位置,项目将不再工作。我不确定路径应该是什么样子。

如果您使用的是相对路径,这通常也意味着一旦您更改了目录结构,它将不再起作用。

示例(我在这里假设 Windows):

java-application 位于 C:\Tools。您正在使用相对路径 (..\file.txt)。这将访问 C:\file.txt.. 向上移动一个目录)。 如果您将应用程序移动到 C:\Tools\JavaApp,它将不再工作,因为 ..\file.txt 现在指向 C:\Tools\file.txt)。

您有多种选择(我想到了三种;有多种方法可以做到这一点)来实现您想要的:

  1. 使用别名访问文件。 Here 是可用的 windows-shortcuts 列表(我假设您使用的是 Windows)。例如:将文件保存到%appdata%,它会一直保存到当前用户的appdata文件夹。要将 windows 快捷方式解析为 Java 中的绝对路径,请使用 System.getenv("APPDATA").

  2. 从程序的工作目录读取文件 这可能是您使用相对路径的意思: java 应用程序的当前工作目录是程序 运行 来自的目录。这将要求您将要读取的文件放置在与 project/jar-file 相同的文件夹中,或者使用相对路径导航到文件的位置,例如工作目录中的 sub-folder放置文件。

  3. 使用.properties文件声明文件位置 您也可以从属性文件中读取文件位置,但是您只能在编译时更改路径。 Here's 一篇关于如何使用 .properties-files.

    的文章

this

您可以这样访问相对路径的文件:

File file = new File("..\..\file.txt");
String fileAbsolutePath = file.getAbsolutePath();

提示:这仅在文件嵌入到项目中时有效。