java - 奇怪的路径会导致文件系统结构错误吗?

标签 java file path filesystems hierarchy

考虑以下示例:

//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

这会很奇怪,因为它暗示 alicehome 的父级,这是不正确的。

最佳答案

首先,我想你想比较 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/

相关文章:

python - 将文件保存在特定目录中的常见路径名操作

java - 从 Java 中的哈希表替换字符串中的值

java - 如何创建仅包含用自定义注释注释的类/方法的 JavaDoc?

java - 我的单独方法不断返回错误的值

java - 在 Java 1.5 中读取 UTF-8 .properties 文件?

c - 如何从 C 中的文本文件中读取字符串矩阵?

C++头文件——语法问题

c - 我的代码无法将我输入的数据放入我的txt文件中,不知道我哪里做错了

android - android.graphics.Path 可以做成 Parcelable 吗?

Windows 7 PATH 环境变量扩展