Java 使用相对路径而不是绝对路径
Java using relative path instead of absolute path
我正在读取 Java 中的文件,当我使用绝对路径时它工作正常。
File myObj = new File("/Users/aaronmk2/Downloads/demo2/SystemDependencies/src/sample_input.txt");
但是,当我尝试使用相对路径时,出现没有这样的文件或目录错误
File myObj = new File("../sample_input.txt");
当我使用我的终端并使用 nano ../sample_input.txt
它会打开文件。
我需要添加什么才能使相对路径起作用?
Java 做相对路径就好了。显然,java 进程的 'current working directory' 与调用 nano
.
时的 cwd 不同
您可以在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
.
我正在读取 Java 中的文件,当我使用绝对路径时它工作正常。
File myObj = new File("/Users/aaronmk2/Downloads/demo2/SystemDependencies/src/sample_input.txt");
但是,当我尝试使用相对路径时,出现没有这样的文件或目录错误
File myObj = new File("../sample_input.txt");
当我使用我的终端并使用 nano ../sample_input.txt
它会打开文件。
我需要添加什么才能使相对路径起作用?
Java 做相对路径就好了。显然,java 进程的 'current working directory' 与调用 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
.