繁体   English   中英

检查文件是否在给定目录中

[英]Checking if a file is in a given directory

我遇到一种情况,我想检查特定路径是否位于特定目录内。 我的本能是做类似的事情

filepath.HasPrefix(filepath.Clean(path), dir)

但是, 仅出于历史原因,将过程filepath.HasPrefix 记录为存在 我是否将通过使用strings.HasPrefix获得相同的效果,或者我缺少什么?

您什么都不丢失,请查看源代码:

// HasPrefix exists for historical compatibility and should not be used.
func HasPrefix(p, prefix string) bool {
    return strings.HasPrefix(p, prefix)
}

只需直接使用strings.HasPrefix(p, prefix)

在Go 1.4中, filepath.HasPrefix 实际上会调用 strings.HasPrefix因此答案是肯定的。

虽然您将获得与strings.HasPrefix相同的功能,但是它通常无法正常工作。 filepath.HasPrefix已被弃用是有原因的,它的方法也应被视为已弃用。

考虑filename=/foo/barprefix=/fo 这通过了strings.HasPrefix测试,但显然bar不在/fo

正确的方法是整体比较每个目录名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM