go基础第八篇:操作文件
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个字节。
- 上一篇 »Javascript基础第三课时【读书笔记】
- 下一篇 »php之基础深入---类与对象篇