文件打开读取
所有跟文件相关的操作都用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()
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现