在我当前的项目中,根目录是 C:\Users\Duke
. 调用 Path.get(".")
是在 C:\Users\Duke\src\dependencies\storage\Store.java
. 我需要将数据写入并保存到一个文件中,但由于它必须在不同的系统上运行,因此无法指定绝对路径。
我打电话给 Path.get(".").forEach(System.out::println)
它把所有的目录都打印出来了 src
而不是 storage
. 这让我非常困惑。难道不是吗 Path.get(".")
请参阅代码所在的当前目录,该目录位于 storage
目录?
2条答案
按热度按时间bbuxkriu1#
.
返回应用程序的工作目录。一般来说,这是您启动java虚拟机以执行java类的目录。它不能引用代码的位置,因为它可以无处不在,例如,在internet上的某个地方,您的类加载器下载了要执行的类(在java小程序还是一种东西或webstart应用程序的旧时代[tm]非常常见)。
nnt7mjpx2#
一
.
表示“工作目录”的相对路径,即运行程序的目录。这通常不是编译程序的源文件的目录或路径。你能做到的Paths.get(".").toAbsolutePath()
查看它所代表的确切目录。如果您使用的是ide,可能很难判断它使用哪个目录作为其工作目录,但通常是项目根目录。通常可以从ide中配置工作目录。
如果您试图加载项目中的文件(如数据文件),您可能会发现资源比直接访问文件系统更好。