标签:最好 缓冲区 bre 文件的 int 调用 写文件 读文件 amp
package main
import (
"bufio"
"fmt"
"io"
"io/ioutil"
"os"
)
//使用ioutil读写文件
func ioutil_method(path string){
//写文件
//只能写入字节,所以需要转化一下
content := []byte("人生の半分は仕方がないでできてる、残りの半分は、帰りたい")
ioutil.WriteFile("a.txt", content, 0644)
//读文件
file, err := ioutil.ReadFile(path)
if err!=nil{
fmt.Println(err)
return
}
//这里的file一定要加上string,否则会打印一个int数组
fmt.Println(string(file)) //人生の半分は仕方がないでできてる、残りの半分は、帰りたい
}
//使用os来读取文件
func os_method(path string){
//写文件
f, err:=os.Create("b.txt")
defer f.Close()
if err!=nil{
fmt.Println(err)
return
}
//可以使用f.WriteString写入字符串,也可以使用f.Write写入字节
f.WriteString("人生の半分は仕方がないでできてる、残りの半分は、帰りたい")
f.Write([]byte("人生の半分は仕方がないでできてる、残りの半分は、帰りたい"))
//读文件
f, err=os.Open("b.txt")
if err!=nil{
fmt.Println(err)
return
}
chunks := make([]byte, 1024)
buf := make([]byte, 1024)
for {
//读取文件必须创建一个缓冲区,表示把f里的内容读到buf里面去,会返回一个n表示读取的长度,和err错误信息
n, err := f.Read(buf)
if err!=nil && err!=io.EOF{
fmt.Println(err)
return
}
if 0 == n{
break
}
//把读取的字节添加到chunks里面去
chunks = append(chunks, buf[: n]...)
}
//读取到的chunks转成string
fmt.Println(string(chunks)) //人生の半分は仕方がないでできてる、残りの半分は、帰りたい人生の半分は仕方がないでできてる、残りの半分は、帰りたい
}
//使用bufio读取文件
func bufio_method(){
f,_:=os.Open("a.txt")
defer f.Close()
chunks := make([]byte, 1024)
buf := make([]byte, 1024)
r := bufio.NewReader(f)
for {
//经过bufio.NewReader处理过的f,也就是r,同样可以调用Read
n, err := r.Read(buf)
if err!=nil && err!=io.EOF{
fmt.Println(err)
}
if 0 == n{
break
}
chunks = append(chunks, buf[: n]...)
}
fmt.Println(string(chunks)) //人生の半分は仕方がないでできてる、残りの半分は、帰りたい
}
//使用ioutil.ReadAll读取文件
func readall_method(){
f, _:=os.Open("a.txt")
defer f.Close()
file, _ := ioutil.ReadAll(f)
fmt.Println(string(file)) //人生の半分は仕方がないでできてる、残りの半分は、帰りたい
}
func main() {
ioutil_method("a.txt")
os_method("b.txt")
bufio_method()
readall_method()
}
//使用ioutil.ReadAll函数读取文件最好
标签:最好 缓冲区 bre 文件的 int 调用 写文件 读文件 amp
原文地址:https://www.cnblogs.com/traditional/p/9574785.html