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

我有一种情况,我想检查特定路径是否位于特定目录内。我的第一直觉是做类似的事情

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

但该程序filepath.HasPrefix记录为仅出于历史原因而存在。我会通过使用获得相同的效果strings.HasPrefix,还是我遗漏了什么?


湖上湖
浏览 192回答 3
3回答

元芳怎么了

你没有遗漏任何东西,看看来源:// 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)直接。

红颜莎娜

虽然您将获得与 相同的功能strings.HasPrefix,但它通常不起作用。filepath.HasPrefix不推荐使用是有原因的,它的方法也应该被视为不推荐使用。考虑filename=/foo/bar和prefix=/fo。这通过了strings.HasPrefix测试,但显然bar不在/fo.正确的方法是从整体上比较每个目录名称。

慕神8447489

在 Go 1.4 方法中filepath.HasPrefix 实际调用 strings.HasPrefix所以答案是肯定的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go