golang文件操作
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
实现了Writer
和Reader
接口,所以可以调用io
和io/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文件操作相关推荐
- golang 文件操作
一.API type File File代表一个打开的文件对象. func Create(name string) (file *File, err error) Create采用模式0666(任何人 ...
- 一文入门Golang文件操作——增删改查【超基础】
目录 前言 正文 增--创建文件 改--修改文件 查--查询文件 删--删除文件 结尾 前言 目前,Golang 可以认为是服务器开发语言发展的趋势之一,特别是在流媒体服务器开发中,已经占有一席之地. ...
- golang 文件操作 创建 读写 复制移动 权限 删除
目录 介绍 基本操作 创建空文件 Truncate文件 得到文件信息 重命名和移动 删除文件 打开和关闭文件 检查文件是否存在 检查读写权限 改变权限.拥有者.时间戳 硬链接和软链接 读写 复制文件 ...
- golang文件操作:打开关闭文件,带缓冲区的读文件
- golang语言操作文件
golang语言操作文件的示例 https://colobu.com/2016/10/12/go-file-operations/#more
- golang常用库之-文件操作(os、path、filepath、ioutil包)、Go 读文件、Go 写文件
文章目录 golang常用库之-文件操作
- golang基础教程(十五)文件操作
golang基础教程 一.文件的基本介绍 文件的概念 文件,对我们并不陌生,文件是数据源(保存数据的地方)的一种,比如大家经常使用的 word 文档,txt 文 件,excel 文件-都是文件.文件最 ...
- Golang笔记—文件操作
文件的基本介绍 文件的概念 文件,对我们并不陌生,文件是数据源(保存数据的地方)的一种,比如大家经常使用的 word 文档,txt 文 件,excel 文件-都是文件.文件最主要的作用就是保存数据,它 ...
- Golang 学习笔记(08)—— 文件操作
path 在path包中封装了一些路径相关的操作,在开始接触文件操作之前,我们先看看路径的相关函数.在Linux中,路径的格式为/user/bin路径中分隔符是/:Windows中的路径格式为c:\W ...
最新文章
- SHELL训练营--day5__shell脚本(1)
- automation服务器不能创建对象的问题
- 职高学的计算机单招考试能换专业吗,2020年湖南中专生单招考大专能换专业吗?...
- How to deal with error message No item category could be determined
- java match parent_Maven的聚合(多模块)和Parent继承
- android中拖动文字实现功能,Android:图片中叠加文字,支持拖动改变位置
- java操作redis redis连接池
- Jsp+Ssm+Mysql在线考试系统
- React Native 0.21 发布 (翻译Changelog)
- php调用平安银行接口,PHP-Java-Bridge的使用(平安银行支付功能专版)
- 计算机cad论文参考文献,autocad论文参考文献大全 autocad参考文献怎么写
- spring中定时器cron表达式在线生成器
- 微信小程序 支付宝小程序 实现省市区县四级联动
- 鼠标左右键的快捷键是什么?
- php爬虫严选,用 Python 爬取网易严选妹子内衣信息,探究妹纸们的偏好|python爬虫|python入门|python教程...
- 996程序员办公室猝死?公司:没死,继续上班了
- 区块链对于相关流程和环节的联系,让元宇宙不再是虚无缥缈的概念
- 微信小程序开发13 云开发:云原生一体化应用开发平台
- PostgreSQL 修改密码
- GDT(全局描述表)
热门文章
- micropython socket_Micropython之HTTP-GET方法2
- TCGA免疫浸润评价数据库,TIMER 2.0 使用指南
- 计算机视觉与深度学习 | 基于控制点的投影畸变图像配准(matlab源码)
- Unicode字符集下CString/tchar*与char *转换 (解决中文乱码等)
- cdh 添加jar包_使用maven下载cdh版本的大数据jar包
- android fastjson漏洞_【漏洞预警】Fastjson 远程代码执行漏洞(暂无PoC)
- C指针原理(2)-ATT汇编
- 【机器学习】使用MLflow管理机器学习模型版本
- 【科普】一文把数据科学、人工智能与机器学习讲清楚
- 【TF-IDF】传统方法TF-IDF解决短文本相似度问题