nio2:检测“..”和类似元素

nio2: detect '..' and suchlike elements

我希望使用传递给我的字符串作为参数作为路径名的元素。我不想被 'Little Bobby Tables' 困扰。也就是说,我不希望“..”是可以接受的。我希望它可以与任意 NIO2 FileSystem 一起使用,因此仅查找字符串 .. 是不够的。我可以进行一些检查,例如 !path.isAbsolute()path.getNameCount() == 1 以过滤掉其他问题案例,但除了将其传递给 resolve 并查找错误的名称计数之外,我还能做任何其他事情吗判断它是否具有 ..?

的语义

toRealPath()

大部分是答案。解决后路径上的方法为您提供 解析父级(例如“..”)和链接后的真实路径。

然后您可以使用 root.startsWith( 路径 ) 快速检查它是否在您的子树中。

但是:仅适用于现有文件。