Go最新golang基础教程(十五)文件操作_os,2024年最新面试杀手锏

img
img
img

既有适合小白学习的零基础资料,也有适合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)

}

注:文件内容变为

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

[外链图片转存中…(img-ZbYbilrE-1715515009202)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值