Golang进阶实战之IO操作
文件读写
12345678910111213141516171819202122232425262728293031323334 | func () { fileInfo, err := os.Stat("aaa.txt") if err != nil { fmt.Println("error") return } fmt.Println(fileInfo) fmt.Println(fileInfo.Name()) fmt.Println(fileInfo.Size()) fmt.Println(fileInfo.IsDir()) // 文件权限 fmt.Println(fileInfo.Mode()) fmt.Println(fileInfo.ModTime()) // 路径 fileName1 := "aaa.txt" fmt.Println(filepath.Abs(fileName1)) fmt.Println(filepath.IsAbs(fileName1)) // 创建目录 err = os.MkdirAll("aa", os.ModePerm) if err != nil { fmt.Println("error") return } // 创建Create 打开Open OpenFile 关闭Close 删除Remove RemoveAll file, err2 := os.Create("fileName2.txt") if err2 != nil { fmt.Println("error") return } fmt.Println(file)} |
数据读写
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | 大专栏 Golang进阶实战之IO操作"code">func () { // io // 读取数据: Read file, err := os.Open("aaa.txt") if err != nil { return } defer file.Close() bs := make([]byte, 4, 4) //n, err := file.Read(bs) //println(err) //println(n) //println(string(bs)) // //n, err = file.Read(bs) //println(err) //println(n) //println(string(bs)) // //n, err = file.Read(bs) //println(err) //println(n) //println(string(bs)) n := -1 for { n, err = file.Read(bs) if n == 0 || err == io.EOF { break } fmt.Println(string(bs[:n])) } // 写入数据: Write file2, err2 := os.OpenFile("bbb.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, os.ModePerm) if err2 != nil { return } defer file2.Close() bs2 := []byte{44,55,66} n2, err4 := file2.Write(bs2) if err4 != nil { return } fmt.Println(n2)} |
io相关
123456789101112131415 | func () { // copy // 可以用Read和Write利用切片实现复制文件 // io.Copy() // ioutil.ReadFile() ioutil.WriteFile() // Seek接口设置读写文件偏移量 // 断点续传 ;利用临时文件记录传输了多少数据 // bufio 添加缓冲区 提高io效率 // buifo.NewReader(file) // Flush() 刷新缓冲区} |