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

【go从零单排】File Paths文件路径

挪威特罗姆瑟夜景

🌈Don’t worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。

📗概念

在 Go 中,处理文件路径通常使用 path/filepath 包。这个包提供了一系列的函数,用于操作和处理文件路径,特别是跨平台的路径操作。

💻代码

package main

import (
	//path/filepath:提供了处理文件路径的函数,适用于不同操作系统。
	//strings:提供字符串处理功能。
	"fmt"
	"path/filepath"
	"strings"
)

func main() {
	//使用 filepath.Join 将多个路径部分连接成一个完整路径。输出结果会根据操作系统的路径分隔符(如 / 或 \)自动调整。
	p := filepath.Join("dir1", "dir2", "filename")
	fmt.Println("p:", p)
	//处理多余的分隔符和相对路径。filepath.Join 会自动规范化路径。
	fmt.Println(filepath.Join("dir1//", "filename"))
	fmt.Println(filepath.Join("dir1/../dir1", "filename"))
	//filepath.Dir(p) 返回路径 p 的目录部分。
	fmt.Println("Dir(p):", filepath.Dir(p))
	//filepath.Base(p) 返回路径 p 的文件名部分。
	fmt.Println("Base(p):", filepath.Base(p))
	//filepath.IsAbs 检查路径是否是绝对路径。第一个示例返回 false(因为是相对路径),第二个示例返回 true(因为是绝对路径)。
	fmt.Println(filepath.IsAbs("dir/file"))
	fmt.Println(filepath.IsAbs("/dir/file"))

	filename := "config.json"
	//filepath.Ext(filename) 返回文件名的扩展名(.json)。
	ext := filepath.Ext(filename)
	fmt.Println(ext)
	//使用 strings.TrimSuffix 去除文件名的扩展名,输出结果为 config。
	fmt.Println(strings.TrimSuffix(filename, ext))
	//filepath.Rel 计算从第一个路径到第二个路径的相对路径。
	//返回 t/file,表示从 a/b 到 a/b/t/file 的相对路径。
	rel, err := filepath.Rel("a/b", "a/b/t/file")
	if err != nil {
		panic(err)
	}
	fmt.Println(rel)
	//计算从 a/b 到 a/c/t/file 的相对路径,返回的结果是 ../c/t/file,表示需要回到 a 目录,然后进入 c/t/file。
	rel, err = filepath.Rel("a/b", "a/c/t/file")
	if err != nil {
		panic(err)
	}
	fmt.Println(rel)
}

🔍理解

  • filepath.Join:将多个路径部分连接成一个完整路径。
  • filepath.Dir:返回路径的目录部分。
  • filepath.Base:返回路径的最后一部分(文件名)。
  • filepath.IsAbs:检查路径是否为绝对路径。
  • filepath.Ext:返回文件名的扩展名。
  • filepath.Rel:计算从一个路径到另一个路径的相对路径。

💡 Tips小知识点

跨平台:

  • path/filepath 包会根据操作系统自动选择适当的路径分隔符(如 Windows 的 \ 和 Unix 的 /),因此可以编写跨平台的代码。
  • 相对路径:在处理相对路径时,确保理解当前工作目录的位置,以避免路径解析错误。

💪无人扶我青云志,我自踏雪至山巅。
在这里插入图片描述


http://www.kler.cn/a/393320.html

相关文章:

  • neo4j desktop基本入门
  • 鸿蒙next版开发:ArkTS组件点击事件详解
  • 【mysql】使用宝塔面板在云服务器上安装MySQL数据库并实现远程连接
  • qt QKeySequence详解
  • 「Py」Python基础篇 之 Python都可以做哪些自动化?
  • MySql结合element-plus pagination的分页查询
  • [ 网络安全介绍 5 ] 为什么要学习网络安全?
  • 自动化测试策略 —— 新功能还是老功能的回归测试?
  • 地面沉降数值模拟/三维地质建模数据处理技术应用
  • 机器学习5_支持向量机_原问题和对偶问题
  • 数字字符串格式化
  • 【Rust调用Windows API】杀掉指定进程(包括兄弟进程、子进程、父进程)
  • 人力资源招聘系统-提升招聘效率与质量的关键工具
  • Docker 部署Nacos 单机部署 MYSQL数据持久化
  • 计算机网络(4)之交换技术,分层技术和默认网关
  • 怎么在MindMaster里插入剪贴画?
  • c++ 二分查找
  • Mac Nginx 前端打包部署
  • Vue开发风格
  • Scala的Map集合练习
  • 关键字“退出、结束、跳过”(day13)
  • 2024 年 10 月区块链游戏研报:活跃用户与链上游戏生态的最新趋势解读
  • 飞牛私有云访问外网
  • Python发展历程·练习题 --- 《跟着小王学Python》
  • Golang | Leetcode Golang题解之第553题最优除法
  • 使用 Python 和 OpenCV 实现摄像头人脸检测并截图