在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1、使用ioutil包的ReadFile函数、ReadAll函数,把整个文件读取到内存中。 func ReadFile(filename string) ([]byte, error) func ReadAll(r io.Reader) ([]byte, error) 2、使用bufio包的NewReader函数生成Reader指针,然后使用Reader指针的ReadString或者ReadBytes方法,一行行读取文件。 func NewReader(rd io.Reader) *Reader func (b *Reader) ReadString(delim byte) (string, error),入参不是string类型,而是byte类型。 func (b *Reader) ReadBytes(delim byte) ([]byte, error),作用和ReadString方法是一样的。 func main() { filepath := "/Users/shengruikou/Desktop/authenticate.js" file, err := os.Open(filepath) if err != nil { fmt.Println("Open file error!", err) return } defer file.Close() reader := bufio.NewReader(file) for true { str, err := reader.ReadString('\n') if err != nil { if err == io.EOF { fmt.Println("File read ok!") break } else { fmt.Println("Read file error!", err) return } } fmt.Println(str) } } 3、使用bufio包的NewReader函数生成Reader指针,然后使用Reader指针的Read方法,按字节读取文件 func NewReader(rd io.Reader) *Reader func (b *Reader) Read(p []byte) (n int, err error) func main() { filepath := "/Users/shengruikou/Desktop/authenticate.js" file, err := os.Open(filepath) if err != nil { fmt.Println("Open file error!", err) return } defer file.Close() reader := bufio.NewReader(file) byteArr := make([]byte, 1024*1024) // 一次读取多少个字节 for true { a, err := reader.Read(byteArr) if err != nil { if err == io.EOF { fmt.Println("File read ok!") break } else { fmt.Println("Read file error!", err) } } else { fmt.Print(string(byteArr[:a])) } } } 按字节读取文本文件时,要谨慎。因为一个英文字符占1个字节,一个中文汉字占3个字节。 |
请发表评论