在Java中,此File位置中的句点表示什么?

时间:2014-02-04 17:41:20

标签: java file-io directory directory-structure

我正在查看一些用Java创建文件的示例代码:

File f = new File("test/.././file.txt");

我对这是如何工作感到困惑 - 你怎么能有“测试”,然后那些...就像那样?如果我在我的机器中的任意目录中运行此代码,为什么它可以工作(即我没有名为“test”的文件夹)。

这是java中路径测试的一些代码的一部分(getAbsolutePath()等)

感谢

6 个答案:

答案 0 :(得分:1)

由于..会返回目录层次结构,因此您将返回到您启动的位置(不在测试中)。这是不必要的,因为它等同于:

File("test.txt")

无论你在哪个目录中运行它都应该工作。

答案 1 :(得分:1)

..只是意味着“提升目录级别”。单身。只是意味着“当前目录级别”。为什么他们在你的文件路径是超出我的。你的路径似乎意味着“进入测试文件夹,然后上升到一个级别(到你开始的那个),保持在那个级别,然后查找file.txt”。你可以用新文件(“file.txt”)来做同样的事情。

答案 2 :(得分:1)

“..”将从当前目录上升到一个目录。因此,此代码与new File("./file.txt");

基本相同

答案 3 :(得分:1)

File f = new File("test/.././file.txt");  //.. is used to go one hierarchy above in the directory structure and . is for current directory

假设你有像ABC / test / file.txt这样的目录结构 如果你在里面测试那么你的。是路径测试 和...是ABC的路径,因为..代表父目录,“test”的父代是“ABC”

答案 4 :(得分:1)

./转到项目所在的目录 ../返回一个文件夹,假设你有一个资源目录

RES /图形/精灵/ image.png

如果你做File file = new File(“./ graphics / sprites /); 这将指向sprite目录

现在如果要返回文件目录文件newFile = file +“../";

答案 5 :(得分:1)

..表示父目录; .表示此目录。

将此作为有效是您应该使用getCanonicalPath() vs getAbsolutePath()

的另一个好理由

例如: 假设您的文件位于/ folder1 / folder2目录下

然后

File f = new File("/folder1/folder2/folder3/../<your file>");
f.getCanonicalPath() ==> /folder1/folder2/<your file>
f.getAbsolutePath() ==> /folder1/folder2/folder3/../<your file>