gpt4 book ai didi

java - 测试相对路径是否会向上移动

转载 作者:行者123 更新时间:2023-11-30 11:15:36 25 4
gpt4 key购买 nike

我从用户那里得到了一个相对路径,在给出它时我不知道它是相对于什么的。我想要做的就是确保它不会从我决定相对于它的地方“逃脱”,即它不是绝对路径,并且不会将目录向上更改到足以超出起点.

例如 foo.html 可以,foo/bar/../baz.html 也可以,甚至 foo/bar/../../baz.html,但不是 foo/bar/../../../baz.html,因为它太高了。

现在如果我知道 / 是目录分隔符并且 .. 是“chup”说明符,这就相对容易了,但我想在平台上进行Java中的独立方式。看起来 Java 已经知道必要的信息,因为它在 java.io.File 中执行路径规范化之类的操作,但我找不到一种方法来“规范化”真正相对的路径.

最佳答案

你可以使用 java.nio.file.Path如果您使用的是 Java 7+:

String suspiciousPath = "foo/bar/../../../baz.html";

Path current = Paths.get(".").toAbsolutePath().normalize();
Path test = current.resolve(suspiciousPath).toAbsolutePath().normalize();

System.out.println(current); // /home/vw5Vv0
System.out.println(test); // /home/baz.html

boolean valid = test.startsWith(current);

System.out.println(valid ? "OK" : "DANGEROUS"); // DANGEROUS

附言。不需要 .toAbsolutePath().normalize() 调用 - 它们只是为了清楚起见。

关于java - 测试相对路径是否会向上移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25314575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com