如何访问具有相对路径的 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
)。
您有多种选择(我想到了三种;有多种方法可以做到这一点)来实现您想要的:
使用别名访问文件。 Here 是可用的 windows-shortcuts 列表(我假设您使用的是 Windows)。例如:将文件保存到%appdata%
,它会一直保存到当前用户的appdata文件夹。要将 windows 快捷方式解析为 Java 中的绝对路径,请使用 System.getenv("APPDATA")
.
从程序的工作目录读取文件
这可能是您使用相对路径的意思:
java 应用程序的当前工作目录是程序 运行 来自的目录。这将要求您将要读取的文件放置在与 project/jar-file 相同的文件夹中,或者使用相对路径导航到文件的位置,例如工作目录中的 sub-folder放置文件。
使用.properties文件声明文件位置
您也可以从属性文件中读取文件位置,但是您只能在编译时更改路径。 Here's 一篇关于如何使用 .properties-files.
的文章
见this
您可以这样访问相对路径的文件:
File file = new File("..\..\file.txt");
String fileAbsolutePath = file.getAbsolutePath();
提示:这仅在文件嵌入到项目中时有效。
我正在使用 IntelliJ Idea,我尝试从项目中的不同位置读取一个 txt 文件。我不想使用像 C:/User/... 这样的绝对路径,因为如果项目移动到不同的位置,项目将不再工作。我不确定路径应该是什么样子。
如果您使用的是相对路径,这通常也意味着一旦您更改了目录结构,它将不再起作用。
示例(我在这里假设 Windows):
java-application 位于 C:\Tools
。您正在使用相对路径 (..\file.txt
)。这将访问 C:\file.txt
(..
向上移动一个目录)。
如果您将应用程序移动到 C:\Tools\JavaApp
,它将不再工作,因为 ..\file.txt
现在指向 C:\Tools\file.txt
)。
您有多种选择(我想到了三种;有多种方法可以做到这一点)来实现您想要的:
使用别名访问文件。 Here 是可用的 windows-shortcuts 列表(我假设您使用的是 Windows)。例如:将文件保存到
%appdata%
,它会一直保存到当前用户的appdata文件夹。要将 windows 快捷方式解析为 Java 中的绝对路径,请使用System.getenv("APPDATA")
.从程序的工作目录读取文件 这可能是您使用相对路径的意思: java 应用程序的当前工作目录是程序 运行 来自的目录。这将要求您将要读取的文件放置在与 project/jar-file 相同的文件夹中,或者使用相对路径导航到文件的位置,例如工作目录中的 sub-folder放置文件。
使用.properties文件声明文件位置 您也可以从属性文件中读取文件位置,但是您只能在编译时更改路径。 Here's 一篇关于如何使用 .properties-files.
的文章
见this
您可以这样访问相对路径的文件:
File file = new File("..\..\file.txt");
String fileAbsolutePath = file.getAbsolutePath();
提示:这仅在文件嵌入到项目中时有效。