Go语言bufio包(读与写)
bufio:高效io读写
buffer缓存 io:input/output
将io包下的Reader,Write对象进行包装,带缓存的包装,提高读写的效率
ReadBytes()
ReadString()
ReadLine()
func (b *Writer) Write(p []byte) (nn int, err error)
func (b *Writer) WriteByte(c byte) error
func (b *Writer) WriteRune(r rune) (size int, err error)
func (b *Writer) WriteString(s string) (int, error)
读操作
1、打开文件
fileName:="F:/golang/aaa.txt"
file, err:=os.Open(fileName)
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
2、创建Reader对象
//创建Reader对象
b1:=bufio.NewReader(file)
3、Read()
//1.Read(),高效读取
p:=make([]byte,1024)
n1,err:=b1.Read(p)
fmt.Println(n1)
fmt.Println(string(p[:n1]))
输出
21
abcdefg
hijklmn
opq
4、ReadLine()
//2.ReadLine() 只读取一行,比较低级,少用
data,flag,err:=b1.ReadLine()
fmt.Println(flag)
fmt.Println(err)
fmt.Println(data)
fmt.Println(string(data))
输出
false
<nil>
[97 98 99 100 101 102 103]
abcdefg
5、ReadString()
for {
s1,err:=b1.ReadString('\n')
fmt.Println(s1)
fmt.Println(err)
if err ==io.EOF {
fmt.Println("读取完毕。。")
break
}
}
输出
abcdefg
<nil>
hijklmn
<nil>
opq
EOF
读取完毕。。
6、ReadBytes()
//4.ReadBytes()
data,err:=b1.ReadBytes('\n')
fmt.Println(err)
fmt.Println(string(data))
输出
<nil>
abcdefg
7、Scanner 如果输入hello world 则只输出hello
//Scanner 如果输入hello world 则只输出hello
s2:=""
fmt.Scanln(&s2)
fmt.Println(s2)
8、使用ReadString可实现输入hello world 输出hello world
b2:=bufio.NewReader(os.Stdin)
s2,_ :=b2.ReadString('\n')
fmt.Println(s2)
写操作
1、打开文件
fileName2:="F:/golang/wri.txt"
file2,err:=os.OpenFile(fileName2,os.O_CREATE|os.O_WRONLY,os.ModePerm)
if err != nil {
fmt.Println(err)
return
}
defer file2.Close()
2、创建NewWriter()
w1:=bufio.NewWriter(file2)
3、写入缓冲区并刷新到文件
for i:=1;i<=1000;i++ { //写入1000个hello
w1.WriteString(fmt.Sprintf("%d:hello",i))
}
w1.Flush()