我正在使用IntelliJ Idea,我试图从项目中的不同位置读取一个txt文件。我不想使用像C:/User/这样的绝对路径。。。因为如果项目被转移到另一个地方,项目就不会再工作了。我不知道这条路应该是什么样子。
如果您使用相对路径,这通常也意味着一旦您更改目录结构,它将不再工作。
示例(我假设这里是Windows(:
java应用程序驻留在C:Tools
中。您使用的是相对路径(..file.txt
(。这将访问C:file.txt
(..
向上移动一个目录(。如果您将应用程序移动到C:ToolsJavaApp
,它将不再工作,因为..file.txt
现在指向C:Toolsfile.txt
(。
你有几个选择(我脑海中有三个;有多种方法可以做到这一点(来实现你想要的:
-
使用别名访问文件。这是一个将工作的窗口快捷方式列表(我假设你使用的是windows(。例如:将文件保存到
%appdata%
,它将始终保存到当前用户的appdata文件夹中。要在Java中将windows快捷方式解析为绝对路径,请使用System.getenv("APPDATA")
。 -
从程序的工作目录中读取文件这可能就是您使用相对路径的意思:java应用程序的当前工作目录是运行程序的目录。这将要求您将要读取的文件放置在与项目/jar文件相同的文件夹中,或者使用相对路径导航到文件的位置,例如工作目录中要放置文件的子文件夹。
-
使用.properties文件声明文件位置您也可以从属性文件中读取文件位置,但只能在编译时更改路径。这是一篇关于如何使用.properties文件的文章。
查看此
你可以通过这样的方式访问相对路径的文件:
File file = new File("..\..\file.txt");
String fileAbsolutePath = file.getAbsolutePath();
提示:只有当文件嵌入到项目中时,这才有效