文件打开读取

所有跟文件相关的操作都用os模块

通过数组做缓冲来读取文件

这个自己决定读取多少内容

package main

import (
  "fmt"
  "os"
)

func main() {
  fileObj, err := os.Open("./main.go")
  fmt.Println(err)
  if err != nil {
    fmt.Printf("open file failed , err:%v\n", err)
    return
  }
  //记得关闭文件
  defer fileObj.Close() //函数要退出时再执行,关闭文件
  //指定读的长度为128比特
  var tmp [128]byte
  for {
    n, err := fileObj.Read(tmp[:]) //此处tmp[:]就是作为缓冲区,暂存文件内容
    if err != nil {
      fmt.Printf("read from file failed, err:%v\n", err)
      return
    }
    fmt.Printf("读了%d个字节", n)
    fmt.Printf(string(tmp[:]))
    if n < 128 {
      return
    }
  }
}

通过bufio来作为缓冲读文件

这个是一行一行的读取文件

package main

import (
  "bufio"
  "fmt"
  "io"
  "os"
)

func readFrombyBufio() {
  fileObj, err := os.Open("./main.go")
  if err != nil {
    fmt.Printf("open file failed , err:%v\n", err)
  }
  defer fileObj.Close()
  reader := bufio.NewReader(fileObj)
  for {
    //此处意思是文件以回车作为返回值
    line, err := reader.ReadString('\n')
    //这里的意思是文件读取到文件末尾就退出
    if err == io.EOF {
      return
    }
    //这里的意思是读到文件出错就退出
    if err != nil {
      fmt.Printf("read line field, err:%v\n", err)
      return
    }
    fmt.Print(line)
  }
}

func main() {
  readFrombyBufio()
}

通过ioutil读取文件

最简单的方法直接指定一个文件名把所有的文件都读取出来

package main

import (
  "fmt"
  "io/ioutil"
)

func readFromIoutil() {
  ret, err := ioutil.ReadFile("./main.go")
  if err != nil {
    fmt.Printf("read file failed , err:%v\n", err)
    return
  }
  fmt.Println(string(ret))
}

func main() {
  readFromIoutil()
}

posted @   suknna  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示