文件读写
文件读
-
按字节读,每读读指定的字节
file, err := os.Open()
打开指定路径的文件defer file.Close()
关闭文件var tmp = make([]byte, 128)
创建字节缓冲区,用于读取文件内容n, err := file.Read(tmp[:])
读取文件内容,n为当前读取的字节数
// 打开文件 fileObj, err := os.Open("./fileOperation/fileOperation.go") if err != nil{ fmt.Printf("Open file fail! err: %v\n", err) return } // 打开后关闭文件 defer fileObj.Close() // 读取文件 var tmp = make([]byte, 128) // 指定读的长度 // 循环读取 for { // n: 当前读到的字节数 n, err := fileObj.Read(tmp[:]) if err != nil{ fmt.Printf("Read file fail! err: %v\n", err) return } //fmt.Printf("读了%d个字节\n", n) fmt.Println(string(tmp[:n])) if n < 128{ break } }
-
通过buffer读,依次读一行
- 获得file
bufio.NewReader(file)
获得传入文件的readerreader.ReadString('\n') // 读取一行
读取到指定内容停止
// 创建一个读对象 reader := bufio.NewReader(file) for{ line, err := reader.ReadString('\n') // 依次读一行 if err == io.EOF{ fmt.Println() fmt.Println("File raed end!") break } if err != nil{ fmt.Printf("File raed fail! err: %v\n", err) return } fmt.Print(line) }
-
一次读取一个文件
ret, err := ioutil.ReadFile("./fileOperation/fileOperation.go") if err != nil{ fmt.Printf("File read fail! err: %v", err) return } fmt.Println(string(ret))
文件写
-
通过字节\字符串写
// 1. 以指定操作方式打开文件,追加、没有文件新建文件、只写 file, err := os.OpenFile("./fileOperation/hello.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil{ fmt.Printf("File open fail! err: %v", err) return } // 关闭文件 defer file.Close() // write _, _ = file.Write([]byte("hello world!!!\n")) // 字节写 _, _ = file.WriteString("hello go world!!!\n") // 字符串写
-
通过buffer写
file, err := os.OpenFile("./fileOperation/hello.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil{ fmt.Printf("File open fail! err: %v", err) return } defer file.Close() // 创建一个写的对象 wr := bufio.NewWriter(file) _, _ = wr.WriteString("hello zgh!!\n") // 将内容写入缓存 _ = wr.Flush() // 将缓存中的内容写入文件中