当前位置: 首页 > news >正文

golang学习笔记:标准库path

path包提供了对文件路径的基本操作,如拼接、分割、获取基础文件名等。

常用方法

路径处理基础

// 路径清理(规范化)
path.Clean("/a//b/../c")           // "/a/c"
path.Clean("./a/b/")               // "a/b"// 路径连接
path.Join("a", "b", "c")           // "a/b/c"
path.Join("/a", "//b", "c/")       // "/a/b/c"

路径分解

filePath := "/home/user/file.txt"// 获取目录部分
path.Dir(filePath)                 // "/home/user"// 获取文件名部分  
path.Base(filePath)                // "file.txt"// 获取文件扩展名
path.Ext(filePath)                 // ".txt"

路径匹配

// 模式匹配(支持 * ? [字符] [^字符])
path.Match("*.go", "main.go")      // true, nil
path.Match("*.go", "main.c")       // false, nil
path.Match("a?c", "abc")           // true, nil// 检查路径是否匹配模式
matched, _ := path.Match("src/*/file.*", "src/pkg/file.go")
// matched = true

相对路径计算

// 计算相对路径
path.Rel("/a/b", "/a/b/c/d")       // "c/d", nil
path.Rel("/a/b", "/a/c")           // "../c", nil

path与filepath的区别

特性pathfilepath
分隔符始终使用 /使用操作系统分隔符
用途URL路径、通用路径文件系统路径
跨平台❌ 不处理平台差异✅ 自动处理平台差异
示例path.Join("a", "b")filepath.Join("a", "b")
import ("path""path/filepath"
)// 对于URL或通用路径使用 path
urlPath := path.Join("api", "v1", "users")  // "api/v1/users"// 对于文件系统路径使用 filepath  
filePath := filepath.Join("dir", "file.txt") // "dir/file.txt" (Unix)// "dir\\file.txt" (Windows)

工具函数

package pathutilimport "path"// 验证路径是否安全(不包含上级目录引用)
func IsSafePath(filePath string) bool {cleaned := path.Clean(filePath)return cleaned != ".." && !path.HasPrefix(cleaned, "../")
}// 获取不带扩展名的文件名
func FileNameWithoutExt(filePath string) string {base := path.Base(filePath)ext := path.Ext(base)return base[:len(base)-len(ext)]
}// 构建URL路径
func BuildURLPath(parts ...string) string {return "/" + path.Join(parts...)
}
http://www.dtcms.com/a/521313.html

相关文章:

  • 建设制作外贸网站的公司南平抖音搜索排名seo软件
  • 网站加载效果怎么做的会员系统网站制作
  • 网站开发总结性报告开发网站通过第三方微信认证登录开发费用
  • 详解 Ceph 存储——CRUSH 算法
  • 淘宝商品规格API接口:快速查询商品SKU价格及优惠信息
  • 深圳做网站乐云seo费用优惠wordpress如何设置分类目录
  • 全球蜂窝物联网模组市场格局与区域需求分析
  • 公司怎么做网站企业自建网站平台有哪些
  • 安徽网站开发费用住总集团公司宣传册设计样本
  • 【03】C语言 强制类型转换 与 进制转换
  • 【解决】Post “http://xxx/api/v1/query“: dial tcp xxx:9090: connect: ...
  • 做门户网站可以用的字体网站建设中常见的问题
  • pc网站建设和推广免费个人简历模板表格下载
  • lesson74:Vue条件渲染与列表优化:v-if/v-show深度对比及v-for key最佳实践
  • 网站页面设计工具wordpress微信查看密码
  • 商城站济宁建设局官方网站
  • 企业网站规范贴吧高级搜索
  • 厦门网站建设小程序开发宁波网站制作与推广价格
  • 做网站防护的网站新冠疫苗公司
  • 网站标题如何修改北京美的网站
  • 沈阳网站选禾钻科技seo销售
  • 像Linux的systemd一样创建一个windows系统服务,让nginx服务随windows系统启动而自动启动服务
  • lesson75:Vue 数据绑定实战:v-model 表单处理与 v-bind 样式控制全解析
  • 图的基本概念与操作
  • **发散创新:深度解析错误处理机制的设计与实现**在软件开发过程中,错误处理是不
  • app大全软件网站中国建筑网官网监理工程师网站
  • 三明网站建设公司免费秒开小游戏
  • 宿迁华夏建设集团网站东莞网络科技公司排名
  • NVIDIA NCCL 源码学习(十五)- Symmetric Memory
  • 3.无重复字符的最长子串