2024年golang基础教程(十五)文件操作_os(1),深入讲解Golang

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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)

}

注:文件内容变为

hello worldg

后面都了个g,其实是覆盖了前面11个字节第12个没有覆盖,应为hello world只有11个字节

  • 场景三
    向文件中追加内容(不覆盖原先的内容)
func main() {
	//默认路径是从项目的根路径开始的
	filePath := "file/test.txt"
	file, e := os.OpenFile(filePath, os.O_WRONLY | os.O_APPEND, 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("|||ABC||DEF"))
	if e !=nil{
		fmt.Println("内容写入缓冲区失败!!")
		return
	}
	e = writer.Flush()
	if e !=nil{
		fmt.Println("内容刷入文件失败!!")
		return
	}
	fmt.Printf("文件写入了%v字节数据",nn)

}

3)ioutil
在这里插入图片描述

func main() {
	//默认路径是从项目的根路径开始的
	filePath := "file/test.txt"
	e := ioutil.WriteFile(filePath, []byte("hello golang"), 0666)
	if e!=nil{
		fmt.Println("写文件出错了")
	}
}

文件内容变为:hello golang

4)文件其他操作
在这里插入图片描述

  • 判断是否存在
func main() {
	//默认路径是从项目的根路径开始的
	filePath := "file/test.txt"
	\_, e := os.Stat(filePath)
	if e==nil || os.IsExist(e)  {
		fmt.Printf("%v exist !!\n",filePath)
	}
	if os.IsNotExist(e) {
		fmt.Printf("%v not exist !!\n",filePath)
	}
}

  • 删除文件
func main() {
	//默认路径是从项目的根路径开始的
	filePath := "file/test.txt"
	e := os.Remove(filePath)
	if e!=nil{
		fmt.Println("remove failed!!")
	}
}

  • 打印指定目录下 的所有文件路径名称


![img](https://img-blog.csdnimg.cn/img_convert/0bbd309a84245254c31a74bf7307d019.png)
![img](https://img-blog.csdnimg.cn/img_convert/04458e326cb3c4ef965c9a17d874aaad.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618658159)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

4598479)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618658159)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值