读取文件
读取文件有多种方法,如
1--os.Open()
func readMethod1() {
// 文件路径
path := "./main.go"
// 获取文件句柄
f, err := os.Open(path)
if err != nil {
fmt.Println("文件打开异常")
return
}
// 延迟处理,确保能关闭句柄
defer f.Close()
// 声明一个存储文件内容的字符型切片
text := make([]byte, 256)
for {
n, err := f.Read(text)
if err == io.EOF {
// 文件读取完毕
return
}
if err != nil {
fmt.Printf("文件读取异常%v\n", err)
return
}
// 将读取到的内容输出
fmt.Print(string(text[:n]))
if n < 256 {
// 读取完毕
return
}
}
}
2--bufio.NewReader()
func readMethod2() {
// 文件路径
path := "./main.go"
f, err := os.Open(path)
if err != nil {
fmt.Println("文件打开异常")
return
}
// 延迟处理,确保能关闭句柄
defer f.Close()
rw := bufio.NewReader(f)
for {
s, err2 := rw.ReadString('\n')
if err2 == io.EOF {
// 文件读取完毕
return
}
if err != nil {
fmt.Printf("文件读取异常%v\n", err)
return
}
// 将读取到的内容输出
fmt.Print(s)
}
}
3--ioutil.ReadFile()
func readMethod3() {
path := "./main.go"
// 读取文件
b, err := ioutil.ReadFile(path)
if err != nil {
fmt.Printf("文件打开异常:%v\n", err)
return
}
// 输出数据
fmt.Println(string(b))
}
写入文件
1--os.OpenFile()
func writeMethod1() {
// 文件路径
path := "./myFile.txt"
// 获取文件句柄
f, err := os.OpenFile(path, os.O_TRUNC|os.O_CREATE|os.O_WRONLY, 0)
if err != nil {
fmt.Println("文件打开异常")
return
}
// 延迟处理,确保能关闭句柄
defer f.Close()
// 写入数据
str := "测试写入数据"
_, err2 := f.WriteString(str)
if err2 != nil {
fmt.Println("文件写入异常")
return
}
}
2--bufio.NewWriter()
func writeMethod2() {
// 文件路径
path := "./myFile.txt"
// 获取文件句柄
f, err := os.OpenFile(path, os.O_TRUNC|os.O_CREATE|os.O_WRONLY, 0)
if err != nil {
fmt.Println("文件打开异常")
return
}
// 延迟处理,确保能关闭句柄
defer f.Close()
// 写入数据
str := "测试写入数据"
w := bufio.NewWriter(f)
_, err2 := w.WriteString(str)
if err2 != nil {
fmt.Printf("文件写入异常:%v", err)
return
}
// 刷新缓冲区
w.Flush()
}
3--ioutil.WriteFile()
func writeMethod3() {
// 文件路径
path := "./myFile.txt"
// 写入数据
str := "测试写入数据666"
err := ioutil.WriteFile(path, []byte(str), fs.ModeAppend)
if err != nil {
fmt.Printf("写入文件异常:%v", err)
return
}
}