为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
湖上湖 2021-09-27 10:33:26
我有一种情况,我想检查特定路径是否位于特定目录内。我的第一直觉是做类似的事情filepath.HasPrefix(filepath.Clean(path), dir)但该程序filepath.HasPrefix被记录为仅出于历史原因而存在。我会通过使用获得相同的效果strings.HasPrefix,还是我遗漏了什么?
查看完整描述

3 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

你没有遗漏任何东西,看看来源:


// 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)直接。


查看完整回答
反对 回复 2021-09-27
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

虽然您将获得与 相同的功能strings.HasPrefix,但它通常不起作用。filepath.HasPrefix不推荐使用是有原因的,它的方法也应该被视为不推荐使用。

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

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


查看完整回答
反对 回复 2021-09-27
?
慕神8447489

TA贡献1780条经验 获得超1个赞

在 Go 1.4 方法中filepath.HasPrefix 实际调用 strings.HasPrefix所以答案是肯定的。


查看完整回答
反对 回复 2021-09-27
  • 3 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信