go基础:文件操作

一、简介

文件操作是开发中极其常见的操作,是每个程序员不能避开的,go的文件操作大部分在os包中,ioutil包和io包也涉及一些文件操作,在这一节,我们从os包出发,讲解go的文件夹的操作,文件的读写操作等。

二、go相关知识

1.目录操作

go的目录操作大部分都在os中

1)创建单独目录函数:

func Mkdir(name string, perm FileMode) error
  • 可以使用相对路径
  • 在创建已存在目录的时候报错

测试代码:

mkdirerr := os.Mkdir("./test", 0777)

1.1)创建连续目录函数:

func MkdirAll(path string, perm FileMode) error
  • 可以使用相对路径
  • 创建已存在目录不会报错
  • 也可以创建单个目录,路径存在不会报错

测试代码:

mkalldirErr := os.MkdirAll("./test", 0777)

2)删除目录

func Remove(name string) error
  • 可以使用相对路径
  • 删除不存在的路径时会报错
  • 当路径不为空的时候会报错

测试代码:

rmErr := os.Remove("./test")

2.1)删除所有内容

func RemoveAll(path string) error
  • 可以使用相对路径
  • 删除不存在的目录不会报错
  • 子目录不为空,包括子目录有文件的时候也不会报错,全部删除

测试代码:

rmAllErr := os.RemoveAll("./test")

3)判断目录存在

在go中可以使用如下的方法进行文件夹存在判断

func FileExist(path string) bool {
  err := syscall.Access(path, syscall.F_OK)
  return !os.IsNotExist(err)
}

2.文件操作

文件操作的函数较多,下面介绍一些os中的文件操作函数

1)文件创建函数

func Create(name string) (file *File, err error)
  • 文件创建函数,返回一个文件句柄
  • 当文件存在的时候,函数不报错,会重新创建一个同名文件,原来文件中的内容清除
  • 可以使用相对路径

测试代码:

file, err := os.Create("test.txt")

2)写函数

func (f *File) Write(b []byte) (n int, err error)
func (f *File) WriteString(s string) (ret int, err error)

上面两个函数是file结构体下面的函数:

通过Create函数、Open、OpenFile函数获取file对象后,可以通过file对象进行写入;

测试代码如下:

	file, err := os.Create("test.txt")
	checkErr(err)
	defer file.Close()
	file.Write([]byte("this is a test\n"))
	file.WriteString("this is a test\r\n")

3)读函数

func (f *File) Read(b []byte) (n int, err error)
func (f *File) ReadAt(b []byte, off int64) (n int, err error)

上面的两个函数也是file类型下的函数,通过Create函数、Open、OpenFile函数获取file对象后,可以通过file对象进行读取

测试代码:

	testfile, err := os.Open("test.txt")
	checkErr(err)
	defer testfile.Close()
	buf := make([]byte, 1024)
	for {
		n, _ := testfile.Read(buf)
		if n == 0 {
			break
		}
		fmt.Println(string(buf[:n]))
	}

相同的内容在下面的公众号中也有发布,每天分享一些编程知识与技巧,感兴趣的朋友可以加关注,感谢支持!!在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值