Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java相对文件路径_Java_File - Fatal编程技术网

Java相对文件路径

Java相对文件路径,java,file,Java,File,我有一个Java问题一直困扰着我:什么是指示相对文件路径的好方法 让我更具体一点。我希望能够说总是在/configuration/file.txt中查找配置文件。我遇到的问题是,我的程序只有从文件所在的目录启动时才能正常工作。相反,如果我从另一个目录启动它,如/directory/to/my/program/execute.sh,则它无法正常工作 但是我还需要对该文件进行更改,并且资源似乎希望是只读的…您需要提供一种定义目录的机制,例如通过环境变量、命令行参数、配置文件、首选项API等来定义目录

我有一个Java问题一直困扰着我:什么是指示相对文件路径的好方法

让我更具体一点。我希望能够说总是在
/configuration/file.txt
中查找配置文件。我遇到的问题是,我的程序只有从文件所在的目录启动时才能正常工作。相反,如果我从另一个目录启动它,如
/directory/to/my/program/execute.sh
,则它无法正常工作


但是我还需要对该文件进行更改,并且资源似乎希望是只读的…

您需要提供一种定义目录的机制,例如通过环境变量、命令行参数、配置文件、首选项API等来定义目录。

建议(这样应用程序就独立于特定于环境的详细信息)读取配置信息的方法是将其作为类路径资源而不是文件系统资源来读取。阅读更多细节

有关如何指定资源路径的语法,请阅读


关于SO的有用帖子:

如果您想要
/configuration/file.txt
表示某个文件相对于某个东西,您必须定义该东西是什么。我们通常让它成为“类路径或当前目录”。不过,您必须编写一些代码才能使其正常工作。符合以下要求的东西(未测试)


为了确保数据始终位于同一位置,可以使用主目录。使用主目录将使您在不同平台之间具有一定的一致性,并且您的程序可以访问数据,而不管它位于哪个目录中

例如:

String userHomeDir = System.getProperty("user.home", ".");
String systemDir = userHomeDir + "/.collection";
然后,您可以稍后使用以下内容检索文件

String fileLocation = systemDir + "/file.txt";

你是说
/configuration/file.txt
而不是
/configuration/file.txt
。第二个路径是绝对路径,不应该引起问题。thx很好,更正了输入错误如果需要修改配置设置,可以将实际配置文件的绝对路径放在资源中。
String fileLocation = systemDir + "/file.txt";