学习golang(day 10)- OS、IO、ioutil、bufio 2022-05-24 23:44:43 编程 golang 暂无评论 496 次阅读 1965字 修改时间:2022-05-24 23:44:43 #OS包,2 **写文本** ```go func writeFile(){ // os.O_APPEND : 追加,os.O_TRUNC:覆盖 file, _ := os.OpenFile("a.txt", os.O_RDWR|os.O_APPEND, 775) file.Write([]byte("hello")) file.WriteString(" world") file.Close() } ``` ------------ #IO 包 IO包中最重要的两个接口:Reader 和 Writer,像OS、ioutil很多包都有实现这连个接口 ------------ #ioutil包 | 名称 | 作用 | | ------------ | ------------ | | ReadAll | 读取所有数据,返回到字节切片 | | ReadDir | 读取一个目录,返回目录数组[]fs.FileInfo | | ReadFile | 读文件,返回文本内容,(字节切片) | | WriteFile | 根据文件路径,写入字节切片 | | TempDir | 根据文件路径,创建临时目录 | | TempFile | 根据文件路径,创建临时文件 | ------------ #bufio 实现了有缓存的IO,包装了io.Reader、io.Writer接口 **一些示例** ```go //每次读取10个字节 func reader() { reader := strings.NewReader("abcd\nefg\nhijk") newReader := bufio.NewReader(reader) //readString, _ := newReader.ReadString('\n') byte := make([]byte,10) for { _, err := newReader.Read(byte) if err == io.EOF{ break }else { fmt.Println(string(byte)) } } } // //每次读取1行,如果超过缓存区4096,只读取前缀 func reader2() { reader := strings.NewReader("abcd\nefg\nhijk") newReader := bufio.NewReader(reader) for { line, _,err := newReader.ReadLine() if err == io.EOF{ break }else { fmt.Println(string(line)) } } } // 按逗号分隔读取 func reader3() { reader := strings.NewReader("abcd,efg,hijk") newReader := bufio.NewReader(reader) slice, _ := newReader.ReadSlice(',') fmt.Println(string(slice)) slice, _ = newReader.ReadSlice(',') fmt.Println(string(slice)) slice, _ = newReader.ReadSlice(',') fmt.Println(string(slice)) } // 写文件 func writer1() { writer := bufio.NewWriter(os.Stdout) writer.WriteString("hell0") writer.Flush() } func scan() { reader := strings.NewReader("abcd efg hijk") bs := bufio.NewScanner(reader) bs.Split(bufio.ScanWords) // 空格(每个词)作为分隔符,拆分 for bs.Scan(){ fmt.Println(bs.Text()) } } ``` 标签: golang
评论已关闭