首页 > 解决方案 > Java使用相对路径而不是绝对路径

问题描述

我正在阅读 Java 中的文件,当我使用绝对路径时它工作正常。

File myObj = new File("/Users/aaronmk2/Downloads/demo2/SystemDependencies/src/sample_input.txt");

但是,当我尝试使用相对路径时,我收到 No such file or directory 错误

File myObj = new File("../sample_input.txt");

当我使用我的终端并使用nano ../sample_input.txt它时,它会打开文件。

我需要添加什么才能使相对路径起作用?

标签: javarelative-pathreadfile

解决方案


Java 做相对路径就好了。那么,很明显,您的 java 进程的“当前工作目录”与您调用nano.

你可以在java中检查CWD。无论哪种方式都可以:

System.out.println(new File(".").getAbsolutePath());

或者:

System.out.println(System.getProperty("user.dir"));

你应该会发现它是不同的。java 进程的“cwd”是由任何启动的 java 设置的 cwd。如果您从命令行调用 java,它将是您执行此操作时所在的目录。如果您双击一个 jar,它将是 jar 所在的目录。如果您正在创建 Windows 快捷方式,则它是快捷方式中列出的目录。例子:

cd /foo/bar
java -jar /bar/baz/hello.jar

在上面的例子中,cwd 是/foo/bar. 不是/bar/baz


推荐阅读