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

问题描述

我正在使用IntelliJ Idea,尝试从项目中的其他位置读取txt文件。我不想使用像C:/ User / ...这样的绝对路径,因为如果将项目移到其他位置,则该项目将无法再使用。我不确定路径的样子。

解决方法

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

示例(我在这里使用Windows)

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

您可以通过多种选择来实现自己的目标(三种方法只是我的头上;有多种方法可以做到):

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

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

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

,

请参见this

您可以通过以下方式访问具有相对路径的文件:

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

提示:仅当文件嵌入到项目中时,此功能才起作用。