考虑以下示例:
//both files are the same
final File path = new File("/home/alice/../bob/file.txt");
final File canonicalPath = new File("/home/bob/file.txt");
File parent = canonicalPath;
while((parent = parent.getParentFile()) != null) {
System.out.println(parent.getName());
}
这将打印:
bob
home
如果我使用 path
而不是 canonicalPath
,输出会是相同的还是会是:
bob
home
alice
home
这会很奇怪,因为它暗示 alice
是 home
的父级,这是不正确的。
最佳答案
首先,我想你想比较 home/alice/../bob/file.txt
而不是开始 /
而不是 /home/alice/../bob/file.txt
,否则你就是在比较苹果和橘子。
其实用这段代码来比较差异更有趣:
File parent;
parent = path;
while((parent = parent.getParentFile()) != null) {
System.out.println(parent);
}
parent = canonicalPath;
while((parent = parent.getParentFile()) != null) {
System.out.println(parent);
}
“home/alice/../bob/file.txt”的 parent :
"home/alice/../bob"
“home/alice/..”
“家/爱丽丝”
“家”
null
相比之下,“home/bob/file.txt”的父级:
“家/bob”
“家”
null
关于java - 奇怪的路径会导致文件系统结构错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27638981/