作为用户的输入,我得到某个文件的路径。
只有当文件位于某个父文件夹中时,才允许用户访问此文件" User /"。
例如:
有一种简单的方法可以用Java检查吗?
答案 0 :(得分:1)
怎么样: -
boolean allowed = new File("the/path").getCanonicalPath().contains("User/");
答案 1 :(得分:0)
您可以从给定的路径名构造File
并循环遍历File#getParent()
链:
public boolean check(final String pathname) throws IOException {
for(File target = new File(pathname).getCanonicalFile();
null != target;
target = target.getParentFile()) {
if("User".equals(target.getName())) {
return true;
}
}
return false;
}
请记住使用File#getCanonicalFile()
来解析给定的路径名。
答案 2 :(得分:-1)
您可以使用File#getCanonicalPath
。下面你可以找到它的Javadoc的摘录。
返回此抽象路径名的规范路径名字符串。一个 规范路径名是绝对的和唯一的。准确的定义 规范形式的系统依赖于系统。此方法首先转换它 必要时路径名为绝对形式,就好像通过调用 getAbsolutePath()方法,然后将其映射到其中的唯一形式 系统相关的方式。 这通常涉及删除冗余名称 例如"。"和" .."从路径名,解析符号链接(在 UNIX平台),并将驱动器号转换为标准情况(on Microsoft Windows平台)。