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



我正在使用IntelliJ Idea,我试图从项目中的不同位置读取一个txt文件。我不想使用像C:/User/这样的绝对路径。。。因为如果项目被转移到另一个地方,项目就不会再工作了。我不知道这条路应该是什么样子。

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

示例(我假设这里是Windows(:

java应用程序驻留在C:Tools中。您使用的是相对路径(..file.txt(。这将访问C:file.txt(..向上移动一个目录(。如果您将应用程序移动到C:ToolsJavaApp,它将不再工作,因为..file.txt现在指向C:Toolsfile.txt(。

你有几个选择(我脑海中有三个;有多种方法可以做到这一点(来实现你想要的:

  1. 使用别名访问文件。这是一个将工作的窗口快捷方式列表(我假设你使用的是windows(。例如:将文件保存到%appdata%,它将始终保存到当前用户的appdata文件夹中。要在Java中将windows快捷方式解析为绝对路径,请使用System.getenv("APPDATA")

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

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

查看此

你可以通过这样的方式访问相对路径的文件:

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

提示:只有当文件嵌入到项目中时,这才有效

最新更新