Golang:Golang文件操作

Golang文件操作

一.文件操作

1.关于文件操作

  • 需要使用到os包
    • os.open 打开文件流 返回一个file指针
    • file.close 关闭文件流
  • 读取文件是对文件的一个输入流
  • 写入文件是对文件的一个输出流

二.实例

1.打开一个文件流

  • 要记得用defer关闭一个文件流,否则会内存泄漏在这里插入图片描述

2.读取文件流内容

  • 读取文件内容,需要用到bufio包
    • bufio.NewReader()(带缓冲区的方式打开,适合打开较大的文件)
    • reader.ReadString()(读取文件)
    • io.EOF表示读到文件末尾
      在这里插入图片描述
  • io/ioutil ioutil.ReadFile()一次性读取文件,不需要open和close,缺点是只能打开较小的文件,不适合打开太大的文件在这里插入图片描述

3.创建文件并且写入内容

  • 创建文件并且写入内容需要用到 os.OpenFile()方法于bufio.NewWriter()方法
  • os.OpenFile()方法
    • 第一个参数需要传入文件路径
    • 第二个参数需要传入打开的模式
    • O_RDONLY int = syscall.O_RDONLY // 只读模式打开文件
      O_WRONLY int = syscall.O_WRONLY // 只写模式打开文件
      O_RDWR int = syscall.O_RDWR // 读写模式打开文件
      O_APPEND int = syscall.O_APPEND // 写操作时将数据附加到文件尾部
      O_CREATE int = syscall.O_CREAT // 如果不存在将创建一个新文件
      O_EXCL int = syscall.O_EXCL // 和O_CREATE配合使用,文件必须不存在
      O_SYNC int = syscall.O_SYNC // 打开文件用于同步I/O
      O_TRUNC int = syscall.O_TRUNC // 如果可能,打开时清空文件

    • 第三个参数是传入文件权限777或者其他
  • bufio.NewWriter()方法
  • 第一个参数是传入一个文件流,返回一个writer指针结构体
  • 用writer.WriteString写入缓冲区, 在用writer.Flush写入文件

运行结果1在这里插入图片描述
运行结果2在这里插入图片描述

三.代码块


package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	// 关于文件操作 需要使用到os包
	// os.open    打开文件流 返回一个file指针
	// file.close 关闭文件流
	// file, err := os.Open("../test.txt")
	// if err != nil {
	// 	fmt.Println(err)
	// 	return
	// }
	// defer file.Close()
	// fmt.Println(file)
	// 读取文件内容,需要用到bufio包
	// bufio.NewReader()(带缓冲区的方式打开)
	// reader.ReadString()(读取文件)
	// io.EOF表示读到文件末尾
	// reader := bufio.NewReader(file)
	// for {
	// 	str, err := reader.ReadString('\n')
	// 	if err == io.EOF {
	// 		break
	// 	}
	// 	fmt.Print(str)
	// }
	// io/ioutil ioutil.ReadFile()一次性读取文件,不需要open和close,缺点是只能打开较小的文件,不适合打开太大的文件
	// filePath := "../test.txt"
	// file, err := ioutil.ReadFile(filePath)
	// if err != nil {
	// 	fmt.Println(err)
	// }
	// fmt.Printf("%s", file)
	/*
		- 创建文件并且写入内容需要用到 os.OpenFile()方法于bufio.NewWriter()方法 
		-   os.OpenFile()方法
			- 第一个参数需要传入文件路径
			- 第二个参数需要传入打开的模式
			- > O_RDONLY int = syscall.O_RDONLY // 只读模式打开文件
			O_WRONLY int = syscall.O_WRONLY // 只写模式打开文件
			O_RDWR   int = syscall.O_RDWR   // 读写模式打开文件
			O_APPEND int = syscall.O_APPEND // 写操作时将数据附加到文件尾部
			O_CREATE int = syscall.O_CREAT  // 如果不存在将创建一个新文件
			O_EXCL   int = syscall.O_EXCL   // 和O_CREATE配合使用,文件必须不存在
			O_SYNC   int = syscall.O_SYNC   // 打开文件用于同步I/O
			O_TRUNC  int = syscall.O_TRUNC  // 如果可能,打开时清空文件
			- 第三个参数是传入文件权限777或者其他
		- bufio.NewWriter()方法
		- 第一个参数是传入一个文件流,返回一个writer指针结构体
		- 用writer.WriteString写入缓冲区, 在用writer.Flush写入文件
	*/
	filePath := "../abc.txt"
	file, err := os.OpenFile(filePath, os.O_WRONLY | os.O_CREATE, 777)
	if err != nil {
		fmt.Println(err)
	}
	defer file.Close()
	writer := bufio.NewWriter(file)
	str := "holler,world\n"
	for i := 0; i < 3; i++ {
		writer.WriteString(str)
	} 
	writer.Flush()
}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:像素格子 设计师:CSDN官方博客 返回首页
评论

打赏作者

ZzzWClock

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值