文件操作
创建文件【一般用于写入文件】
file,err := os.Create(path) //不存在则会创建一个新的,存在则重新写入
if err != nil{
fmt.Println("文件打开失败",err)
return
}
defer file.Close()
打开文件【一般用于读取文件】
file,err := os.Open(path)
if err != nil{
fmt.Println("文件打开失败",err)
return
}
删除文件
err :=os.Remove("b.txt") //不存在也可以“删除”
if err != nil{
fmt.Println("删除失败",err)
return
}
复制文件
src,err:=os.Open(path)
if err != nil{
fmt.Println("文件打开失败",err)
return
}
defer src.Close()
newPath :="b.txt"
dst,err :=os.Create(newPath)
if err != nil{
fmt.Println("文件打开失败",err)
return
}
defer dst.Close()
i,err :=io.Copy(dst,src) // 返回的i表示复制长度
if err != nil{
fmt.Println("文件复制失败",err)
return
}
fmt.Println(i)
文件读取/写入【带缓冲区】
读取文件
content = make([]Type, 0) //初始化切片用于存储即将读取的数据
scanner := bufio.NewScanner(file) //获取一个读取器,可以用来读取文件或流的内容。
// 逐行读取文件
for scanner.Scan() {
line := scanner.Text() // 获取当前行的内容
//数据处理
// 检查读取过程中是否发生错误
if err := scanner.Err(); err != nil {
fmt.Println("读取文件错误:", err)
}
写入文件
writer := bufio.NewWriter(file) //创建一个写入器,可以用来写入文件或流的内容
_, err := writer.WriteString(content+ "\n") // 每行后添加换行符
if err != nil {
fmt.Println("写入文件错误:", err)
return
}
writer.Flush() // 刷新缓冲区以正式写入
心得:io包最核心的是实现了Reader、Writer、Closer、Seeker接口,file也实现了其相应的接口,故带缓冲区的写入/读取方法可传入file。