英文:
How can I access a txt file with a relative path?
问题
我正在使用IntelliJ Idea,我尝试从项目的不同位置读取txt文件。我不想使用像C:/User/...这样的绝对路径,因为如果项目移动到其他位置,项目将无法正常工作。我不确定路径应该是什么样的。
英文:
I'm using IntelliJ Idea and I try to read a txt file from a different location in the project. I don't want to use an absolute path like C:/User/... because if the project is moved to a different location the project wouldn't work anymore. I'm not sure how the path should look like.
答案1
得分: 1
如果您使用相对路径,通常也意味着一旦更改目录结构,它将不再起作用。
示例(我假设这里是Windows):
Java应用程序位于 C:\Tools
。您正在使用相对路径(..\file.txt
)。这将访问 C:\file.txt
(..
移动到上一级目录)。
如果您将该应用程序移动到 C:\Tools\JavaApp
,它将不再工作,因为 ..\file.txt
现在指向 C:\Tools\file.txt
)。
您有几个选项(我脑海中仅列出了三个选项;有多种方法可以实现您想要的效果):
-
使用别名来访问文件。这里 是一些在Windows上可以工作的快捷方式列表(我假设您正在使用Windows)。例如:将文件保存到
%appdata%
,它将始终保存到当前用户的应用数据文件夹。要在Java中将Windows快捷方式解析为绝对路径,请使用System.getenv("APPDATA")
。 -
从程序的工作目录中读取文件
这可能是您使用相对路径时所指的:
Java应用程序的当前工作目录是从中运行程序的目录。这将要求您将要读取的文件放在与您的项目/jar文件相同的文件夹中,或者使用相对路径导航到文件的位置,例如您的工作目录中的子文件夹,您将在其中放置该文件。 -
使用 .properties 文件声明文件位置
您还可以从属性文件中读取文件位置,但只能在编译时更改路径。这里有 一篇关于如何使用 .properties 文件的文章。
英文:
If you are using relative Paths, this will generally also mean that it will not work anymore once you are changing directory structure.
Example (I am assuming Windows here):
The java-application resides C:\Tools
. You are using a relative Path (..\file.txt
). This would access C:\file.txt
(..
moves up one directory).
If you moved the App to C:\Tools\JavaApp
it wouldn't work anymore, since ..\file.txt
now points to C:\Tools\file.txt
).
You have several options (three just from the top of my head; there are multiple ways to do this) to achieve what you want:
-
Use an alias to access the file. Here is a list of windows-shortcuts that will work (I am assuming that you are using Windows). For example: Save the file to
%appdata%
, and it will always save to the current user's appdata folder. To resolve the windows shortcut to an absolute path in Java, useSystem.getenv("APPDATA")
. -
Read the file from the program's working directory
This is probably what you meant by using relative paths:
The current working directory of a java application is the directory the program is being run from. This will require you to place the file to be read in the same folder as your project/jar-file, or to use relative paths to navigate to the file's location, for example a sub-folder in your working directory where you would place the file. -
Use a .properties file to declare the file location
You could also read the file location from a properties file, however you can only change the path at compile time. Here's an article on how to use .properties-files.
答案2
得分: 1
参见 此链接
您可以像这样使用相对路径访问文件:
File file = new File("..\\..\\file.txt");
String fileAbsolutePath = file.getAbsolutePath();
提示:仅当文件嵌入到项目中时才有效。
英文:
See this
You can access files with relative path like this way:
File file = new File("..\\..\\file.txt");
String fileAbsolutePath = file.getAbsolutePath();
Hint: This only works if the file is embedded to the project.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论