Go语言bufio包(读与写)

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()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值