既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
二、文件的基本操作
1、打开文件和关闭文件
示例:
func main() {
//默认路径是从项目的根路径开始的
file, e := os.Open("file/test.txt")
if e != nil{
fmt.Println("文件打开失败!!")
}
e = file.Close()
if e != nil{
fmt.Println("文件关闭失败!!")
}
}
2、读文件操作
1) bufio
读取文件的内容并显示在终端(带缓冲区的方式),使用 os.Open, file.Close, bufio.NewReader(), reader.ReadString 函数和方法.
func main() {
//默认路径是从项目的根路径开始的
file, e := os.Open("file/test.txt")
if e != nil {
fmt.Println("文件打开失败!!")
}
//main方法结束时关闭文件
defer func() {
i := file.Close()
if i != nil {
fmt.Println("文件关闭失败!!")
}
}()
reader := bufio.NewReader(file)
for {
line, isPrefix, e := reader.ReadLine()
if e == io.EOF {
fmt.Println("结束:", e)
break
} else {
fmt.Println(isPrefix,string(line))
}
}
}
说明:
reader := bufio.NewReader(file)
for{
str, e := reader.ReadString('\n')
if len(str) == 0{
break
}
if e !=nil && e != io.EOF{
break
}
fmt.Println(str)
}
说明:
2) ioutil
读取文件的内容并显示在终端(使用 ioutil 一次将整个文件读入到内存中),这种方式适用于文件
不大的情况。相关方法和函数(ioutil.ReadFile)
func main() {
//默认路径是从项目的根路径开始的
filePath := "file/test.txt"
bytes, e := ioutil.ReadFile(filePath)
if e!=nil{
fmt.Printf("读取文件%v出错了\n",filePath)
return
}
fmt.Println(string(bytes))
}
说明:
3、写文件操作
1)、基本介绍-os.OpenFile 函数
- 第一个参数name:文件路径名称
- 第二个参数flag:文件打开的模式(可以组合)
- 第三个参数perm:权限控制(系统)
权限取值范围:0~7
0:没有任何权限
1:执行权限()如果文件是可执行文件,是可以运行的
2:写权限
3:写权限和执行权限
4:读权限
5:读权限和执行权限
6:读权限和写权限
7:读权限、写权限和执行权限
一般选择6
2)、向里文件数据
- 场景一
新建文件并写入数据
func main() {
//默认路径是从项目的根路径开始的
filePath := "file/test.txt"
//O\_CREATE创建和O\_EXCL存在报错 (保证文件是新建的)O\_WRONLY(只写,为了后面将内容写入文件)
file, e := os.OpenFile(filePath, os.O_CREATE|os.O_EXCL|os.O_WRONLY, 0666)
defer func() {
if i := file.Close();i!=nil{
fmt.Println("文件关闭失败!!")
}
}()
if e!=nil{
fmt.Println("文件创建失败!!")
return
}
writer := bufio.NewWriter(file)
nn, e := writer.Write([]byte("hello golang"))
if e !=nil{
fmt.Println("内容写入缓冲区失败!!")
return
}
e = writer.Flush()
if e !=nil{
fmt.Println("内容刷入文件失败!!")
return
}
fmt.Printf("文件写入了%v字节数据",nn)
}
- 场景二
覆盖上面写的内容
func main() {
//默认路径是从项目的根路径开始的
filePath := "file/test.txt"
file, e := os.OpenFile(filePath, os.O_WRONLY, 0666)
defer func() {
if i := file.Close();i!=nil{
fmt.Println("文件关闭失败!!")
}
}()
if e!=nil{
fmt.Println("文件创建失败!!")
return
}
writer := bufio.NewWriter(file)
nn, e := writer.Write([]byte("hello world"))
if e !=nil{
fmt.Println("内容写入缓冲区失败!!")
return
}
e = writer.Flush()
if e !=nil{
fmt.Println("内容刷入文件失败!!")
return
}
fmt.Printf("文件写入了%v字节数据",nn)
}
注:文件内容变为
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
[外链图片转存中…(img-ZbYbilrE-1715515009202)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新