ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 文件读取 > func (f *File) Read(b []byte) (n int, err error) > Read(b []byte) > b []byte 文件字节组成的切片 > Read方法从文件中读取最多len(b)字节数据并写人byte数组b,它返回读取的字节数和可能遇到的任何错误。文件终止标志是读取0个字节且返回值err为io.EOF。 ``` package main import ( "fmt" "os" ) func mode(path string) { //读取文件内容 file, err := os.Open(path) if err != nil { fmt.Println(err) } // 创建 byte 的slice(切片)用于接收文件读取数据 buf := make([]byte, 1024) // 循环读取 for { // Read函数会改变文件当前偏移量 len, _ := file.Read(buf) // 读取字节为0时,跳出循环 if len == 0 { break } fmt.Println(string(buf)) } // 关闭文件 file.Close() } // 读取999.txt 文件内容 func main() { // 路径 mode("E:\\flie\\999.txt") } ``` 当文件较大时使用ReadAt接口 > func (f *File) ReadAt(b []byte, off int64) (n int, err error) > ReadAt(b []byte, off int64) > b []byte 文件字节组成的切片 > off int64 偏移字节 ReadAt从指定的位置(相对于文件开始位置)读取len(b)字节数据并写入byte数组b。它返回读取的字节数和可能遇到的任何错误。当n<len(b)时,本方法总是会返回错误;如果是因为到达文件结尾,返回值err会是io.EOF。 ``` package main import ( "fmt" "os" ) func mode(path string) { //读取文件内容 file, err := os.Open(path) if err != nil { fmt.Println(err) } // 创建 byte 的slice(切片)用于接收文件读取数据 buf := make([]byte, 1024) // ReadAt函数会改变文件当前偏移量 // ReadAt读取偏移9字节的内容 _, _ = file.ReadAt(buf, 9) // file.ReadAt(buf, 9) fmt.Println(string(buf)) // 关闭文件 _ = file.Close() // file.Close() } // 读取999.txt 文件内容 func main() { // 路径 mode("E:\\flie\\999.txt") } ```