GO语言-文件IO处理2

文件IO处理

Seek函数

Seek函数的作用是调整文件读写位置。我们接下俩详细讲解一下Seek函数 go func (f *File) Seek(offset int64, whence int) (ret int64, err error) { if err := f.checkValid("seek"); err != nil { return 0, err } r, e := f.seek(offset, whence) if e == nil && f.dirinfo != nil && r != 0 { e = syscall.EISDIR } if e != nil { return 0, f.wrapErr("seek", e) } return r, nil } 参数含义: - offset: 偏移量 - whence:调整的位置,有三个值可以选择。 - os.SEEKSET:文件头 - os.SEEKCUR:当前位置 - os.SEEK_END:结束位置。

Seek是通过whence+offset的组合来调整文件的读写位置。 代码示例: go Seek(20,os.SEEK_SET) //从文件头偏移20个字节的位置 Seek(0.os.SEEK_END) //偏移文件到结束位置 SEEK(0,os.SEEk_SET) //偏移文件到开始位置 然后我们把之前学的结合起来应用到示例中···

示例

```go func main(){ //创建文件 fd,err:=os.OpenFile("a.txt",os.ORDWR|os.OCREATE|os.OTRUNC,0666) if err !=nil{ fmt.Println("打开文件失败,错误原因:",err) return } //写入字符串 n,err:=fd.WriteString("全民制作人们大家好!!\n") if err !=nil{ fmt.Println("写入文件,错误原因:",err) return } fmt.Println("写入成功") //调整文件的读写位置 fd.Seek(0,SEEKSET) //构建一个缓冲区 bu:=make([]byte,20) //读取文件内容 n,err=fd.Read(bu)
os.Stdout.Write(buf) //标准输出 defer fd.Close() //关闭文件

``` 我们需要注意以下几点:

  1. 我们要展示写入内容需要使用Seek函数把文件偏移到开始位置。再使用Read函数读取
  2. string类型的函数可以用[ ]byte强制转换,[]byte类型也可以强制转换成string类型
  3. 我们使用os.Stdout.Write调用,就是使用标准输出,在进程内默认打开一个文件描述符,打印到屏幕
  4. 在文件打开后一定要关闭,最好是使用defer延时执行函数的调用,懂得收尾是程序员编码中非常重要的一个习惯

本文正在参加技术专题18期-聊聊Go语言框架

猜你喜欢

转载自blog.csdn.net/y943711797/article/details/125869762