Skip to main content

文件读写

runtime.caller

os模块简介

在使用os.Getwd()方法时,在vscode打开文件夹和直接打开go源文件执行结果是不同的.

这一问题的根本原因在于工作目录不同所导致,

file是什么,

os.open方法,

open方法是对openFile的封装,以O_RDONLY模式,

在使用file.read方法获取文件内容时,遇到EOF,EOF是什么?

  1. EOF 不是错误io.EOF 是一个预定义的错误,表示正常到达文件末尾

关于runtime.caller和os.Executable的选择:

使用runtime.caller当:

  • 需要获取源代码位置信息
  • 调试和日志记录
  • 开发时加载相对路径的资源文件

使用os.executable当:

  • 需要获取可执行文件位置
  • 生产环境中定位配置文件
  • 创建相对于可执行文件的路径

读取文件内容

方法1,按字节读取

方法2,

方法3,按行读取

总结,

对于一般文件,可一次性读取文件内容,

对于大文件,可选择按字节读取,防止内存溢出

分析readAll源码,

go
1
2
3

b = append(b, 0)[:len(b)]是什么含义呢?

append函数用于向切片追加元素,用于扩容的小技巧?

go
1
2
3
4
5
6
7
8
func main() {
nums := []int{1, 2, 3, 4, 5}
nums = append(nums, 0)[:5]
fmt.Println(nums)
}