我正在查看一些用Java创建文件的示例代码:
File f = new File("test/.././file.txt");
我对这是如何工作感到困惑 - 你怎么能有“测试”,然后那些..
和.
就像那样?如果我在我的机器中的任意目录中运行此代码,为什么它可以工作(即我没有名为“test”的文件夹)。
这是java中路径测试的一些代码的一部分(getAbsolutePath()等)
感谢
答案 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>