go文件的相关操作函数在os包下,可以查看os包官方文档来学习。

创建文件并写入内容

创建文件和写入需要用到两个函数:

 func Create(name string) (*File, error)func (f *File) Write(b []byte) (n int, err error)

具体的代码如下:

package mainimport ("log""os"
)func main() {file, createErr := os.Create("/Users/deweixu/demo.txt")if createErr != nil {log.Fatal(createErr)}_, writeErr := file.Write([]byte("创建一个文件,并写入内容。"))if writeErr != nil {log.Fatal(writeErr)}closeErr := file.Close()if closeErr != nil {log.Fatal(closeErr)}
}

$ go run create_write.go就会看到创建了文件demo.txt, 并写入了内容。

读取文件内容

package mainimport ("fmt""log""os"
)func main() {//打开文件file, err := os.Open("/Users/deweixu/demo.txt")if err != nil {log.Fatal(err)}//创建一个缓冲区, 每次读取1024 bytebuf := make([]byte, 1024)for {len, readErr := file.Read(buf)if len == 0 {break}if readErr != nil {log.Fatal(err)}fmt.Printf("%s", string(buf))}fmt.Print("\n")
}

$ go run read.go就可以看见读取成功。

os包下还有有关目录的操作函数和其他的功能,可以查阅相关的文档来学习使用。

复制文件

package mainimport ("log""os"
)func main() {//创建一个新文件dstFile, createErr := os.Create("/Users/deweixu/demo-cp.txt")if createErr != nil {log.Fatal(createErr)}//打开源文件srcFile, openErr := os.Open("/Users/deweixu/demo.txt")if openErr != nil {log.Fatal(openErr)}//创建一个缓冲区, 每次读取1024 bytebuf := make([]byte, 1024)for {len, readErr := srcFile.Read(buf)if len == 0 {break}if readErr != nil {log.Fatal(readErr)}_, writeErr := dstFile.Write(buf)if writeErr != nil {log.Fatal(writeErr)}}//忽略Close 错误dstFile.Close()srcFile.Close()
}

go run cp.go 完成复制。

因为File实现了WriterReader接口,所以可以调用ioio/ioutil包下的一些函数来操作文件,比如上面的复制功能可以用io包下的这些函数来实现

func Copy(dst Writer, src Reader) (written int64, err error)
func CopyBuffer(dst Writer, src Reader, buf []byte) (written int64, err error)
func CopyN(dst Writer, src Reader, n int64) (written int64, err error)

具体代码如下:

package mainimport ("io""log""os"
)func main() {//创建一个新文件dstFile, createErr := os.Create("/Users/deweixu/demo-cp.txt")if createErr != nil {log.Fatal(createErr)}//打开源文件srcFile, openErr := os.Open("/Users/deweixu/demo.txt")if openErr != nil {log.Fatal(openErr)}//创建一个缓冲区, 每次读取1024 bytebuf := make([]byte, 1024)_, cpErr := io.CopyBuffer(dstFile, srcFile, buf)if cpErr != nil {log.Fatal(cpErr)}//忽略Close 错误dstFile.Close()srcFile.Close()
}

区分打开的File是目录还是文件

os包下还有关于目录操作的函数,可查阅文档使用,这里说说区分文件和目录的功能,需要用到stat函数。

package mainimport ("fmt""log""os"
)func main() {file, err := os.Open("/Users/deweixu")if err != nil {log.Fatal(err)}fileInfo, statErr := file.Stat()if statErr != nil {log.Fatal(statErr)}isDir := fileInfo.IsDir()fmt.Printf("%t\n", isDir)
}

golang文件操作相关推荐

  1. golang 文件操作

    一.API type File File代表一个打开的文件对象. func Create(name string) (file *File, err error) Create采用模式0666(任何人 ...

  2. 一文入门Golang文件操作——增删改查【超基础】

    目录 前言 正文 增--创建文件 改--修改文件 查--查询文件 删--删除文件 结尾 前言 目前,Golang 可以认为是服务器开发语言发展的趋势之一,特别是在流媒体服务器开发中,已经占有一席之地. ...

  3. golang 文件操作 创建 读写 复制移动 权限 删除

    目录 介绍 基本操作 创建空文件 Truncate文件 得到文件信息 重命名和移动 删除文件 打开和关闭文件 检查文件是否存在 检查读写权限 改变权限.拥有者.时间戳 硬链接和软链接 读写 复制文件 ...

  4. golang文件操作:打开关闭文件,带缓冲区的读文件

  5. golang语言操作文件

    golang语言操作文件的示例 https://colobu.com/2016/10/12/go-file-operations/#more

  6. golang常用库之-文件操作(os、path、filepath、ioutil包)、Go 读文件、Go 写文件

    文章目录 golang常用库之-文件操作

  7. golang基础教程(十五)文件操作

    golang基础教程 一.文件的基本介绍 文件的概念 文件,对我们并不陌生,文件是数据源(保存数据的地方)的一种,比如大家经常使用的 word 文档,txt 文 件,excel 文件-都是文件.文件最 ...

  8. Golang笔记—文件操作

    文件的基本介绍 文件的概念 文件,对我们并不陌生,文件是数据源(保存数据的地方)的一种,比如大家经常使用的 word 文档,txt 文 件,excel 文件-都是文件.文件最主要的作用就是保存数据,它 ...

  9. Golang 学习笔记(08)—— 文件操作

    path 在path包中封装了一些路径相关的操作,在开始接触文件操作之前,我们先看看路径的相关函数.在Linux中,路径的格式为/user/bin路径中分隔符是/:Windows中的路径格式为c:\W ...

最新文章

  1. SHELL训练营--day5__shell脚本(1)
  2. automation服务器不能创建对象的问题
  3. 职高学的计算机单招考试能换专业吗,2020年湖南中专生单招考大专能换专业吗?...
  4. How to deal with error message No item category could be determined
  5. java match parent_Maven的聚合(多模块)和Parent继承
  6. android中拖动文字实现功能,Android:图片中叠加文字,支持拖动改变位置
  7. java操作redis redis连接池
  8. Jsp+Ssm+Mysql在线考试系统
  9. React Native 0.21 发布 (翻译Changelog)
  10. php调用平安银行接口,PHP-Java-Bridge的使用(平安银行支付功能专版)
  11. 计算机cad论文参考文献,autocad论文参考文献大全 autocad参考文献怎么写
  12. spring中定时器cron表达式在线生成器
  13. 微信小程序 支付宝小程序 实现省市区县四级联动
  14. 鼠标左右键的快捷键是什么?
  15. php爬虫严选,用 Python 爬取网易严选妹子内衣信息,探究妹纸们的偏好|python爬虫|python入门|python教程...
  16. 996程序员办公室猝死?公司:没死,继续上班了
  17. 区块链对于相关流程和环节的联系,让元宇宙不再是虚无缥缈的概念
  18. 微信小程序开发13 云开发:云原生一体化应用开发平台
  19. PostgreSQL 修改密码
  20. GDT(全局描述表)

热门文章

  1. micropython socket_Micropython之HTTP-GET方法2
  2. TCGA免疫浸润评价数据库,TIMER 2.0 使用指南
  3. 计算机视觉与深度学习 | 基于控制点的投影畸变图像配准(matlab源码)
  4. Unicode字符集下CString/tchar*与char *转换 (解决中文乱码等)
  5. cdh 添加jar包_使用maven下载cdh版本的大数据jar包
  6. android fastjson漏洞_【漏洞预警】Fastjson 远程代码执行漏洞(暂无PoC)
  7. C指针原理(2)-ATT汇编
  8. 【机器学习】使用MLflow管理机器学习模型版本
  9. 【科普】一文把数据科学、人工智能与机器学习讲清楚
  10. 【TF-IDF】传统方法TF-IDF解决短文本相似度问题