一、文件操作
go语言中提供了多种文件操作的方式,在使用过程中需要根据实际情况来选择。
二、实战
package main
import (
"bufio"
"fmt"
"io"
"io/ioutil"
"os"
)
/**
文件操作
*/
func main() {
//打开文件
fileObj, err := os.Open("../go/src/zy.txt")
if err != nil {
fmt.Printf("open failed err:%v \n", err)
return
}
//延迟关闭文件
defer fileObj.Close()
//读取文件内容
var tempFile = make([]byte, 256)
n, errs := fileObj.Read(tempFile)
if errs != nil {
fmt.Printf("read failed %v", errs)
return
}
fmt.Println("read bytes from file", n)
// 输出文件内容
fmt.Print(string(tempFile), "\n")
//readAll()
//readBufio()
//iotilRead()
//write()
//writeBufio()
ioUtilWrite()
}
//使用io 读取
func readAll() {
//打开文件
fileObj, err := os.Open("../go/src/read.txt")
if err != nil {
fmt.Printf("open failed err:%v \n", err)
return
}
//延迟关闭文件
defer fileObj.Close()
//读取文件内容
var tempFile = make([]byte, 256)
for {
n, errs := fileObj.Read(tempFile)
// 文件是否读取结束
if errs == io.EOF {
fmt.Println(tempFile[:n])
return
}
if errs != nil {
fmt.Printf("read failed errs:%v \n ", errs)
return
}
fmt.Printf("read %d bytes from file \n", n)
// 输出文件内容
fmt.Print(string(tempFile[:n]))
}
}
//使用 bufio 读取
func readBufio() {
//打开文件
fileObj, err := os.Open("../go/src/read.txt")
if err != nil {
fmt.Printf("open failed err:%v \n", err)
return
}
//延迟关闭文件
defer fileObj.Close()
//读取文件内容
//var tempFile = make([]byte, 256)
reader := bufio.NewReader(fileObj)
for {
line, errs := reader.ReadString('\n')
// 文件是否读取结束
if errs == io.EOF {
fmt.Println(line)
return
}
if errs != nil {
fmt.Printf("read failed errs:%v \n ", errs)
return
}
//fmt.Println("read bytes from file", line)
// 输出文件内容
fmt.Print(string(line))
}
}
// ioUtil 读取文件
func iotilRead() {
file, err := ioutil.ReadFile("../go/src/read.txt")
if err != nil {
fmt.Printf("read file error:%v \n", err)
return
}
fmt.Println(string(file))
}
// 文件写入
func write() {
file, err := os.OpenFile("../go/src/read.txt", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0644)
if err != nil {
fmt.Printf("write file error %v\n", err)
return
}
// 关闭文件流
defer file.Close()
str := "tom like go "
file.WriteString(str)
}
// 使用writeBufio 写入
func writeBufio() {
file, err := os.OpenFile("../go/src/read.txt", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
fmt.Printf("write file error %v\n", err)
return
}
// 关闭文件流
defer file.Close()
writer := bufio.NewWriter(file)
str := "钟渊在学习 哈哈哈"
writer.WriteString(str)
writer.Flush()
}
// ioUtil 操作文件写入
func ioUtilWrite() {
str := "今天是星期六"
error := ioutil.WriteFile("../go/src/read.txt", []byte(str), 0644)
if error != nil {
fmt.Println(" file write error", error)
return
}
}