Go目录文件路径操作

目录操作

os.ReadDir()

读取目录

package mainimport ("fmt""os"
)func main() {dirs, err := os.ReadDir("./search")if err != nil {fmt.Println(err)}for _, dir := range dirs {fileinfo, _ := dir.Info()fmt.Println(fileinfo)fmt.Println("is_dir:", dir.IsDir(), "name:", dir.Name())}
}

os.Chdir()

切换目录

package mainimport ("fmt""os"
)func main() {currentDir, _ := os.Getwd()fmt.Println("current_dir:", currentDir) // current_dir: D:\Project\test_go\testerr := os.Chdir("./search")if err != nil {fmt.Println(err)}currentDir, _ = os.Getwd()fmt.Println("current_dir:", currentDir) // current_dir: D:\Project\test_go\test\search
}

os.Chmod()

修改文件或目录权限

package mainimport ("fmt""os"
)var FileMode os.FileMode = 0400 // go的Windows权限模式不同于Linux, 0200和0600读写,0400只读func main() {const FilePath = "./search/default.go"fileinfo, _ := os.Stat(FilePath)fmt.Println(fileinfo.Mode()) // -rw-rw-rw-err := os.Chmod(FilePath, FileMode)if err != nil {fmt.Println(err)}fileinfo, _ = os.Stat(FilePath)fmt.Println(fileinfo.Mode()) // -r--r--r--
}
package mainimport ("fmt""os"
)var FileMode os.FileMode = 0400 // go的Windows权限模式不同于Linux, 0200和0600读写,0400只读func main() {const FilePath = "./search"fileinfo, _ := os.Stat(FilePath)fmt.Println(fileinfo.Mode()) // drwxrwxrwxerr := os.Chmod(FilePath, FileMode)if err != nil {fmt.Println(err)}fileinfo, _ = os.Stat(FilePath)fmt.Println(fileinfo.Mode()) // dr-xr-xr-x
}

os.Mkdir()

创建目录

package mainimport ("log""os"
)var DirMode os.FileMode = 0755func main() {err := os.Mkdir("test", DirMode)if err != nil {log.Print(err)}
}

os.MkdirAll()

递归创建目录

package mainimport ("log""os"
)var DirMode os.FileMode = 0755func main() {err := os.MkdirAll("test/test/test", DirMode)if err != nil {log.Print(err)}
}

os.Remove()

删除目录或文件

package mainimport ("log""os"
)func main() {err := os.Remove("test/test/test")if err != nil {log.Print(err)}
}

os.RemoveAll()

递归删除目录

package mainimport ("log""os"
)func main() {err := os.RemoveAll("test")if err != nil {log.Print(err)}
}

os.Rename()

目录重命名

package mainimport ("log""os"
)func main() {oldName := "test"newName := "dir"err := os.Rename(oldName, newName)if err != nil {log.Fatal(err)}
}

文件操作

os.ReadFile()

读取文件

package mainimport ("fmt""os"
)func main() {data, err := os.ReadFile("test.txt")if err != nil {fmt.Println(err)}fmt.Println(string(data)) // hello world
}

os.WriteFile()

写文件 

package mainimport ("fmt""io/fs""os"
)func main() {err := os.WriteFile("test.txt", []byte("hello world"), fs.ModeType)if err != nil {fmt.Println(err)}
}

os.Create()

创建文件

用Create()函数创建一个名为name的文件,默认采用模式0666。如果文件已存在,则它会被重置为空文件。如果成功,则返回的文件描述符对象可用于文件的读写。

package mainimport ("fmt""os"
)func main() {fp, err := os.Create("./test.txt")if err != nil {fmt.Println("file create failed")}fmt.Printf("%T", fp) // *os.Filedefer fp.Close()
}

文件路径操作

filepath.Abs()

获取路径的绝对路径

package mainimport ("fmt""path/filepath"
)func main() {f, _ := filepath.Abs("./search")fmt.Println(f) // D:\Project\test_go\test\search
}

filepath.Join()

路径拼接

package mainimport ("fmt""path/filepath"
)func main() {f := filepath.Join("test", "search", "default.go")fmt.Println(f) // test\search\default.go
}

filepath.Base()

返回路径 basename

package mainimport ("fmt""path/filepath"
)func main() {f := filepath.Base("D:\\Project\\test_go\\test\\search")fmt.Println(f) // search
}

filepath.Clean()

返回路径的简洁模式

package mainimport ("fmt""path/filepath"
)func main() {f := filepath.Clean("./search/../data")fmt.Println(f) // search
}

filepath.Dir()

返回路径的上级目录

package mainimport ("fmt""path/filepath"
)func main() {f := filepath.Dir("./search/default.go")fmt.Println(f) // search
}

filepath.Ext()

返回文件的扩展名

package mainimport ("fmt""path/filepath"
)func main() {f := filepath.Ext("./search/default.go")fmt.Println(f) // .go
}

filepath.FromSlash()

路径使用系统兼容的路径连接符

package mainimport ("fmt""path/filepath"
)func main() {f := filepath.FromSlash("./search/default.go")fmt.Println(f) // .\search\default.go
}

filepath.Split()

获取路径中的目录和文件

package mainimport ("fmt""path/filepath"
)func main() {dir, file := filepath.Split("./search/default.go")fmt.Println(dir)  // ./search/fmt.Println(file) // default.go
}

filepath.Glob()

通配文件

package mainimport ("fmt""path/filepath"
)func main() {files, _ := filepath.Glob("./search/*.go")for _, file := range files {fmt.Println(file)}// search\default.go// search\feed.go// search\match.go// search\search.go
}

filepath.IsAbs()

绝对路径判断

package mainimport ("fmt""path/filepath"
)func main() {isAbs := filepath.IsAbs("./search/match.go")fmt.Println("isAbsDir:", isAbs) // isAbsDir: falseabspath, _ := filepath.Abs("./search/match.go")fmt.Println(abspath) // D:\MyProject\Go\test\search\match.goisAbs = filepath.IsAbs("D:\\MyProject\\Go\\test\\search\\match.go")fmt.Println("isAbsDir:", isAbs) // isAbsDir: true}

filepath.Walk()

目录遍历

package mainimport ("fmt""os""path/filepath"
)func main() {root := `./test`err := filepath.Walk(root, scan)if err != nil {fmt.Printf("filepath.Walk() return %v\n", err)//scaned dir: ./test//scaned dir: test\test//scaned dir: test\test\test//scaned file: test\test\test\test.txt}
}func scan(path string, f os.FileInfo, err error) error {if f.IsDir() {fmt.Printf("scaned dir: %s\n", path)} else {fmt.Printf("scaned file: %s\n", path)}return nil
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/116745.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VR航天科普主题公园模拟太空舱体验馆vr航天模拟体验设备

VR航天航空体验馆巡展是一项非常受欢迎的展览活动,可以让公众在现场体验到航天飞行的乐趣。 普乐蛙VR展览组织者会设计一个航天航空主题的VR体验馆,并在馆内设置各种航天航空相关的展示内容,如太空舱、火箭发射、星际航行等。 其次&#xff0…

【机器学习合集】泛化与正则化合集 ->(个人学习记录笔记)

文章目录 泛化与正则化1. 泛化(generalization)2. 正则化方法2.1 显式正则化方法显式正则化方法对比提前终止模型的训练多个模型集成Dropout技术 2.2 参数正则化方法2.3 隐式正则化方法方法对比 泛化与正则化 1. 泛化(generalization) 泛化不好可能带来的问题 模型性能不稳定容…

解决Linux下编译TBB动态库出错的问题

在CMakeLists.txt中,原来有一段这样查找和链接的配置代码 find_library(tbblibaray ${tbb_path}) target_link_libraries(backalarm ${tbblibaray})编译后提示错误: /myapp/library/tbb/libtbb.so:对‘__cxa_throw_bad_array_new_lengthCX…

css伪类元素使用技巧 表达input父级聚焦css实现

:focus-within 可以让它自己被聚焦或者它的后代元素被聚焦input 中有required 加星号在这里插入图片描述

学习笔记二十一:Pod容器健康探测

这里写目录标题 为什么要对容器做探测默认的健康检查 k8s 提供了三种来实现容器探测的方法三种探针Pod探针相关的属性: 启动探测startupprobeexec模式tcpsocket模式httpget模式 存活性探测livenessProbeLivenessProbe 探针使用示例通过HTTP方式做健康探测httpGet探测…

k8s day08

metric-server概述: Metrics Server从kubelets收集资源指标,并通过Metrics API将它们暴露在Kubernetes apiserver中,以供HPA(Horizontal Pod Autoscaler)和VPA(Vertical Pod Autoscaler)使用。 Metrics API也可以通过kubectl top访问&…

高压放大器在扫描显微镜中的应用及优势是什么

随着科技的不断进步,扫描显微镜成为了现代显微镜技术的重要组成部分。它能够提供更高的分辨率、更广的视场和更强的功能,用于研究各种微观结构和材料的特性。而高压放大器在扫描显微镜系统中发挥着至关重要的作用。下面安泰电子Aigtek将详细介绍高压放大…

hive针对带有特殊字符非法json数据解析

一、背景 有的时候前端或者后端进行埋点日志,会把json里面的数据再加上双引号,或者特殊字符,在落日志的时候,组装的格式就不是正常的json数据了,我们就需要将带有特殊字符的json数据解析成正常的json数据。 二、正则…

算法题:最大出牌数量

最近遇到的一个算法题,在这里记录一下找到的答案。 完整题目: 手里给一副手牌,数字从0-9,有r(红色),g(绿色),b(蓝色),y(黄色)四种颜色,出牌规则为每次打出的牌必须跟上…

一百九十二、Flume——Flume数据流监控工具Ganglia单机版安装

一、目的 在安装好Flume之后,需要用一个工具可以对Flume数据传输进行实时监控,这就是Ganglia 二、Ganglia介绍 Ganglia 由 gmond、gmetad 和 gweb 三部分组成。 (一)第一部分——gmond gmond(Ganglia Monitoring Da…

阶乘(Python)

一、定义 整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,0的阶乘为1。即:n!123...n 二、方法说明 python求整数n阶乘的方法: 1、使用math模块factorial(n)来计算n的阶乘 2、for循环语句…

JAVA毕业设计102—基于Java+Springboot+vue的个人理财管理系统(源码+数据库)

基于JavaSpringbootvue的个人理财管理系统(源码数据库) 一、系统介绍 本系统前后端分离 管理员功能: 登录、注册、添加账单、导出账单、统计分析、个人信息修改、消费对比 二、所用技术 后端技术栈: SpringbootSpringMvcmybatismysql 前端技术栈…

[MoeCTF 2023]——Web方向详细Write up、Re、Misc、Crypto部分Writeup

签到 hello CTFer 将url地址复制然后打开即可 得到flag Web http 听说这个http里还有个什么东西叫饼干,也不知道是不是吃的 踩坑了,这里用连接器。。。 开启题目环境 GET方式请求,然后把各种请求头往里加 GET ?UwUuHeader: …

ConcurrentHashMap底层具体实现知道吗?实现原理是什么

从这三个方面来回答: ConcurrentHashMap 的整体架构 ConcurrentHashMap 的基本功能 ConcurrentHashMap 在性能方面的优化 ConcurrentHashMap 的整体架构 这个是 ConcurrentHashMap 在 JDK1.8 中的存储结构,它是由数组、单向链表、红黑树组成. 当我们初始…

mysql的锁介绍

从共享性上来说,mysql的数据库锁分为: 共享锁(读锁):lock in share mode;一个事务获取了读锁之后,不排斥其他事务读数据,但排斥其他事务增删改。 排它锁(写锁):for update;一个事务获…

【ROS 2 基础-常用工具】-7 Rviz仿真机器人

所有内容请查看:博客学习目录_Howe_xixi的博客-CSDN博客

读书笔记——富兰克林自传

富兰克林自传 1.我从这件事得到一个启发,只要人们专心工作,就会活得非常快乐。在工作的日子里,他们往往温顺和气,心情愉快。白天痛痛快快地干活,晚上开开心心地吃喝。但是,一旦空闲无事,他们就…

Java的反射(reflection)机制的简单使用

目录 一、定义 二、用途 三、反射基本信息 四、反射相关的类 五、反射示例 六、反射的优点和缺点 一、定义 Java的反射机制是运行时的状态,可以通过反射来调用类里面的属性和方法,私有的属性和方法也可以调用,也可以对它们进行修改。 二…

常见面试题-Netty专栏(一)

typora-copy-images-to: imgs Netty 是什么呢?Netty 用于做什么呢? 答: Netty 是一个 NIO 客户服务端框架,可以快速开发网络应用程序,如协议服务端和客户端,极大简化了网络编程,如 TCP 和 UDP …

LVS+keepalived高可用集群

1、定义 keepalived为lvs应运而生的高可用服务。lvs的调度器无法做高可用,keepalived实现的是调度器的高可用,但keepalived不只为lvs集群服务的,也可以做其他代理服务器的高可用,比如nginxkeepalived也可实现高可用(重…