信息发布→ 登录 注册 退出

如何在Golang中使用os操作文件与目录

发布时间:2025-11-02

点击量:
os包提供文件与目录操作接口。1. os.Create创建文件并写入内容;2. os.Open配合file.Read读取文件;3. os.Mkdir和MkdirAll创建单个或多个目录;4. os.Remove删除文件或空目录,os.RemoveAll递归删除目录树;5. os.Rename重命名或移动文件/目录;6. os.Stat获取文件信息如大小、权限、类型等;7. 通过os.Stat和os.IsNotExist判断文件是否存在。结合defer和错误处理可确保操作安全可靠。

如何在golang中使用os操作文件与目录

在Golang中,os 包提供了对操作系统功能的接口,包括文件和目录的操作。你可以用它来创建、读取、写入、重命名和删除文件与目录。下面介绍常用操作及其使用方法。

1. 创建文件与写入内容

使用 os.Create 可以创建一个新文件。如果文件已存在,会清空原内容。

file, err := os.Create("example.txt")
if err != nil {
    log.Fatal(err)
}
defer file.Close()

_, err = file.WriteString("Hello, Golang!")
if err != nil {
    log.Fatal(err)
}

这段代码创建了一个名为 example.txt 的文件,并写入一段文本。

2. 读取文件内容

使用 os.Open 打开一个已有文件进行读取。

file, err := os.Open("example.txt")
if err != nil {
    log.Fatal(err)
}
defer file.Close()

data := make([]byte, 100)
n, err := file.Read(data)
if err != nil && err != io.EOF {
    log.Fatal(err)
}

fmt.Printf("读取了 %d 字节: %s\n", n, data[:n])

你也可以用 io.ReadAll 一次性读取全部内容。

3. 创建目录

使用 os.Mkdir 创建单个目录,os.MkdirAll 可创建多级目录(包含父目录)。

名品购物网店系统 名品购物网店系统

适合品牌专卖店专用,从前台的美工设计就开始强调视觉形象,有助于提升商品的档次,打造网店品牌!后台及程序核心比较简洁,着重在线购物,去掉了繁琐的代码及垃圾程式,在结构上更适合一些中高档的时尚品牌商品展示. 率先引入语言包机制,可在1小时内制作出任何语言版本,程序所有应用文字皆引自LANG目录下的语言包文件,独特的套图更换功能,三级物品分类,购物车帖心设计,在国内率先将购物车与商品显示页面完美结合,完

名品购物网店系统 0 查看详情 名品购物网店系统
err := os.Mkdir("mydir", 0755) // 权限 0755
if err != nil {
    log.Fatal(err)
}

// 创建多级目录
err = os.MkdirAll("path/to/deep/dir", 0755)
if err != nil {
    log.Fatal(err)
}

4. 删除文件或目录

os.Remove 可用于删除文件或空目录。os.RemoveAll 则可以递归删除整个目录树。

// 删除文件
err := os.Remove("example.txt")
if err != nil {
    log.Fatal(err)
}

// 删除目录及其所有内容
err = os.RemoveAll("mydir")
if err != nil {
    log.Fatal(err)
}

5. 重命名或移动文件/目录

使用 os.Rename 实现文件或目录的重命名或移动。

err := os.Rename("oldname.txt", "newname.txt")
if err != nil {
    log.Fatal(err)
}

只要源路径和目标路径在同一磁盘分区,就可以成功执行。

6. 获取文件信息

使用 os.Stat 获取文件或目录的详细信息,如大小、权限、是否为目录等。

info, err := os.Stat("example.txt")
if err != nil {
    log.Fatal(err)
}

fmt.Printf("文件名: %s\n", info.Name())
fmt.Printf("大小: %d\n", info.Size())
fmt.Printf("是否是目录: %v\n", info.IsDir())
fmt.Printf("权限: %s\n", info.Mode())

7. 检查文件是否存在

Go 没有直接的“Exists”函数,但可以通过 os.Stat 和错误判断实现。

if _, err := os.Stat("example.txt"); os.IsNotExist(err) {
    fmt.Println("文件不存在")
} else {
    fmt.Println("文件存在")
}
基本上就这些。os 包足够应对大多数基础文件系统操作,结合 defer 和错误处理,能写出安全可靠的代码。

以上就是如何在Golang中使用os操作文件与目录的详细内容,更多请关注其它相关文章!


相关文章: TypeScript/J*aScript:高效查找数组中首个唯一ID对象  使用CSS更改登录屏幕输入框中PNG图标颜色的策略与局限性  Pandas DataFrame 高效批量赋值:告别循环与笛卡尔积误区  12306选座怎么选到商务座_12306商务座选择与配置说明  PHP中获取MongoDB服务器运行时间(Uptime)的专业指南  C++如何实现一个装饰器模式_C++设计模式之动态地给对象添加额外职责  poki网页游戏推荐_poki免费游戏平台入口  虚幻5科幻题材ARPG大作遭取消!本是《奇异人生》厂商新作  Selenium Python中处理点击后新窗口加载冻结问题的策略与实践  J*aScript设计模式实践_j*ascript代码优化  Win11怎么设置鼠标指针速度_Win11提高鼠标指针精确度选项  mysql备份恢复性能优化_mysql备份恢复性能优化方法  修复二维数组索引越界异常:一维循环到二维坐标的正确映射  PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符  Composer的 "check-platform-reqs" 命令有什么用_在部署前检查生产环境是否满足Composer依赖需求  从OpenAI API响应中高效提取生成文本  Golang如何测试channel通信行为_Golang channel通信测试与分析方法  天眼查企业查询官网入口 天眼查官方网页版查询  PHP URL参数传递与500错误调试指南  C++的std::forward_list怎么用_C++ STL中单向链表容器的特点与应用  React/Next.js中实现列表项的动态移动与状态管理:兼论唯一键的重要性  电脑IP地址怎么查 查看本机IP地址的几种方法  LINUX的I/O重定向是什么_深入理解LINUX中 >、>> 与 < 的区别  Windows 11怎么彻底关闭定位_Windows 11服务中禁用Geolocation  在python-socketio事件处理器中安全访问Flask应用上下文  Sublime Text怎么显示空格和制表符_Sublime显示不可见字符设置  台积电1.4nm工艺A14瞄准2028:10年来性能提升80%  4399网页游戏电脑版全新入口 4399电脑端在线玩指南  Python Socket多播通信中指定源IP地址的实践指南  Windows10怎么开启夜间模式 Windows10系统设置调整色温与亮度缓解夜间用眼疲劳【教程】  poki免费入口快捷访问 poki人气小游戏直接玩站点  excel怎么提取文本中数字 excel函数提取技巧  QQ邮箱官方邮箱登录入口 QQ邮箱网页版快速访问  Fabric Mod开发:在1.19.3+版本中正确添加自定义物品并管理物品组  C++如何实现线程池_C++11手动实现一个简单的固定大小线程池  马斯克:Optimus 人形机器人复数形式为 Optimi  c++ dfs和bfs代码 c++深度广度优先搜索算法  Tailwind CSS line-clamp 布局问题解析与修复指南  Python多版本共存与虚拟环境管理深度指南  Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】  特斯拉自动驾驶房车计划曝光 原型车将于2027年亮相  Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧  Golang如何实现容器化日志收集与分析_Golang容器日志收集分析方法  BetterDiscord插件中安全更新用户简介的实践指南  解决Django多数据库/多Schema环境下外键迁移问题  Angular中父组件异步更新子组件复选框状态的实践指南  Win11截图该按哪些键 Win11截屏完整流程解析【教程】  PHP实现即时文章发布与单次数据库写入:自提交模式教程  自定义Bag-of-Words实现:处理带负号的词汇权重  TikTok网页版直接登录 TikTok网页端官方平台入口 

在线客服
服务热线

服务热线

4008988990

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!