Go 读取文件,块读取 Read(),行读取 ReadBytes('\n')

demo.go(读取文件,块读取 Read()):

package main

import (
	"fmt"
	"io"
	"os"
)

func main() {
	// 打开文件
	fp, err := os.Open("./demo.txt")  // os.Open() 只读方式打开
	if err != nil {
		fmt.Println("打开文件失败。", err)
		return
	}
	defer fp.Close()

	buf := make([]byte, 1024)
	// 读取文件 (块读取)
	//count, _ := fp.Read(buf)  // count表示读取出来的有效字符(byte)数
	//fmt.Println(string(buf[:count]))
	for {
		// 循环读取文件
		n, err2 := fp.Read(buf)
		if err2 == io.EOF {  // io.EOF表示文件末尾
			fmt.Println("文件读取结束")
			break
		}
		fmt.Print(string(buf[:n]))
	}
}

demo.go(读取文件,行读取 ReadBytes('\n')):

package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
)

func main() {
	// 打开文件
	fp, err := os.OpenFile("./demo.txt", os.O_RDONLY, 6)
	if err != nil {
		fmt.Println("打开文件失败。", err)
		return
	}
	defer fp.Close()

	// 创建文件的缓存区
	r := bufio.NewReader(fp)
	for {
		// 读取文件 (行读取) ReadBytes('\n')
		slice, err2 := r.ReadBytes('\n')  // '\n'表示按行读取。 ','表示按英文逗号读取。
		fmt.Print(string(slice))  // 先打印,再判断err2 (如果文件末尾没有'\n',那么需要先打印再判断err2)
		if err2 == io.EOF {  // 如果读取到文件末尾
			break
		}
	}
}

猜你喜欢

转载自blog.csdn.net/houyanhua1/article/details/88760853
今日推荐