英文:
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
时,它会打开该文件。
我需要添加什么内容以使相对路径起作用?
英文:
I am reading in a file in Java and when I use the absolute path it works fine.
File myObj = new File("/Users/aaronmk2/Downloads/demo2/SystemDependencies/src/sample_input.txt");
However, when I try to use the relative path I get a No such file or directory error
File myObj = new File("../sample_input.txt");
When I use my terminal and use nano ../sample_input.txt
it opens up the file.
What do I need to add to get the relative path to work?
答案1
得分: 1
Java可以很好地处理相对路径。因此,你的Java进程的'当前工作目录'与调用nano
时的cwd不同。
你可以在Java中检查CWD。以下两种方式都可以:
System.out.println(new File(".").getAbsolutePath());
或者:
System.out.println(System.getProperty("user.dir"));
你会发现它们是不同的。Java进程的cwd是由启动Java的实体设置的。如果你从命令行调用Java,它将是你在其中执行命令时所在的目录。如果你双击一个JAR文件,它将是JAR文件所在的目录。如果你在Windows上创建一个快捷方式,它将是快捷方式中列出的目录。例如:
cd /foo/bar
java -jar /bar/baz/hello.jar
在上面的示例中,cwd是/foo/bar
,而不是/bar/baz
。
英文:
Java does relative paths just fine. Clearly, then, the 'current working directory' for your java process is not the same as the cwd when you're invoking nano
.
You can check the CWD in java. Either way will work:
System.out.println(new File(".").getAbsolutePath());
or:
System.out.println(System.getProperty("user.dir"));
You should find that it is different. The 'cwd' for a java process is the cwd that it was set to by whatever started java. If you're invoking java from the command line, it'll be the directory you're in as you do so. If you are double clicking a jar, it'll be the directory the jar is in. If you're making a windows shortcut, it's the directory listed in the shortcut. Example:
cd /foo/bar
java -jar /bar/baz/hello.jar
In the above example, the cwd is /foo/bar
. Not /bar/baz
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论