golang文件操作

7 篇文章 0 订阅

1.使用Openfile对文件进行读写

1.1 使用Openfile对文件写入

os.OpenFile()函数能够以指定模式打开文件,从而实现文件写入相关功能。

func OpenFile(name string, flag int, perm FileMode) (*File, error) {
	...
}

name:要打开的文件名
flag:打开文件的模式

  • os.O_WRONLY 只写
  • os.O_CREATE 创建文件
  • os.O_RDONLY 只读
  • os.O_RDWR 读写
  • os.O_TRUNC 清空
  • os.O_APPEND 追加

perm:文件权限

func main() {
	//使用openfile写数据
	file, err := os.OpenFile("./t1.txt", os.O_APPEND|os.O_CREATE|os.O_RDWR|os.O_TRUNC, 0777)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer file.Close()
	file.Write([]byte("白日依山尽,"))
	file.Write([]byte("黄河入海流,"))
}

1.2 使用Openfile读取文件

func main() {
	ctx := make([]byte, 1024)
	content := make([]byte, 0, 1024*1024*1024)
	file, err := os.OpenFile("./t1.txt", os.O_RDONLY, 0777)
	if err != nil {
		return
	}
	defer file.Close()
	for {
		n, err := file.Read(ctx)
		if err != nil {
			if err == io.EOF {
				break
			}
			fmt.Println(err)
			return
		}
		content = append(content, ctx[:n]...)
	}
	fmt.Println(string(content))
}

2.使用Open读文件,使用Create写文件

2.1 使用Open读文件

func main() {
	con := make([]byte, 1024)
	content := make([]byte, 0, 1024*1024)
	file, err := os.Open("./t1.txt")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer file.Close()
	for {
		n, err := file.Read(con)
		if err != nil {
			if err == io.EOF {
				break
			}
			fmt.Println(err)
			return
		}
		content = append(content, con[:n]...)
	}
	fmt.Println(string(content))
}

2.2 使用Create写文件

注意:如果文件路径不存在会创建文件写入,文件存在时先清空在写入

func main() {
	file, err := os.Create("./t1.txt")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer file.Close()
	n, err := file.Write([]byte("黄河入海流"))
	fmt.Println(n, err)
}

3.使用bufio读取文件

3.1 使用bufio一行一行的读

func main() {
	file, err := os.Open("./t1.txt")
	if err != nil {
		return
	}
	defer file.Close()
	reader := bufio.NewReader(file) //获取读句柄
	for {
		line, isP, err := reader.ReadLine()
		if err != nil {
			if err == io.EOF {
				break
			}
			fmt.Println(err)
			return
		}
		fmt.Println(string(line), isP)
	}
}

4.使用ioutil读取整个文件

func main() {
	content, err := ioutil.ReadFile("./t1.txt")
	if err != nil {
		return
	}
	fmt.Println(string(content))
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值