Go文件操作(下)写

Go文件操作(下)写

前言

上次内容,我们讲解了,Go文件操作的读文件内容的三种方法
今天我们学习在如何将内容写入文件

完整示例代码

package main

import (
	"bufio"
	"fmt"
	"io/ioutil"
	"os"
)

// 写文件的三种方法

//方法一.

func wf1() {
    
    
	fp := "./1文件写入.txt" // 文件路径
	// 当我们想要写入一个文件的时候,会有三种情况:
	/*
		1. 如果文件不存在,先创建再写入
		2. 如果文件存在, 追加写入
		3. 如果文件存在,清空重写
	*/
	f, err := os.OpenFile(fp, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
	//os.O_CREATE|os.O_APPEND 表示如果文件不存在,就创建文件,如果文件存在,则追加写入
	if err != nil {
    
    
		fmt.Printf("文件打开失败,err:%v", err)
		return
	}
	defer f.Close() //延迟关闭文件
	content := "我写了点什么"
	f.Write([]byte(content))

}

func wf1_2() {
    
    
	fp := "./1_2文件写入.txt" // 文件路径
	// 当我们想要写入一个文件的时候,会有三种情况:
	/*
		1. 如果文件不存在,先创建再写入
		2. 如果文件存在, 追加写入
		3. 如果文件存在,清空重写
	*/
	f, err := os.OpenFile(fp, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
	//os.O_CREATE|os.O_APPEND 表示如果文件不存在,就创建文件,如果文件存在,则追加写入
	if err != nil {
    
    
		fmt.Printf("文件打开失败,err:%v", err)
		return
	}
	defer f.Close() //延迟关闭文件
	content := "我改写了点什么?"
	f.Write([]byte(content))

}

func wf1_3() {
    
    
	fp := "./1_3文件写入.txt" // 文件路径
	// 当我们想要写入一个文件的时候,会有三种情况:
	/*
		1. 如果文件不存在,先创建再写入
		2. 如果文件存在, 追加写入
		3. 如果文件存在,清空重写
	*/
	//直接创建新文件. 如果文件已经存在,会直接重建,效果相当于os.O_CREATE|os.O_TRUNC
	f, err := os.Create(fp)
	//os.O_CREATE|os.O_APPEND 表示如果文件不存在,就创建文件,如果文件存在,则追加写入
	if err != nil {
    
    
		fmt.Printf("文件打开失败,err:%v", err)
		return
	}
	defer f.Close() //延迟关闭文件
	content := "我直接新建的文件"
	f.Write([]byte(content))

}

// 方法二:
func wf2() {
    
    
	fp := "./bufio文件写入.text"
	f, err := os.OpenFile(fp, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
	if err != nil {
    
    
		fmt.Printf("文件打开出错, err:%v", err)
		return
	}
	defer f.Close()
	bw := bufio.NewWriter(f)
	bw.Write([]byte("第一种内容方式\n"))
	bw.WriteString("第二种内容方式")
	bw.Flush() // 一定要注意加上这一句,用来将缓存中的内容写入文件
}

// 方法三:
func wf3() {
    
    
	//如果文件已经存在,会清空内容重写文件
	content := "ioutil方法写入文件"
	err := ioutil.WriteFile("./ioutil文件.txt", []byte(content), 0666)  // 直接调用ioutil的WriteFile()方法写入内容.
	if err != nil {
    
    
		fmt.Printf("文件打开出错, err:%v", err)
		return
	}

}

func main() {
    
    
	wf1()
	wf1_2()
	wf1_3()
	wf2()
	wf3()

}

代码说明

  1. 方法一中,写了个三个函数.一般我们按第一/二个函数的方法来写即可,第三种方法的本质是第二种方法.
  2. 当我们用OpenFile()函数打开文件获得文件操作句柄的时候,要注意两点:
  • 文件的关闭操作
  • 如果是Linux系统下,第三个参数将申请系统的文件操作权限 .一般我们写0666即可.第三个参数win系统不起作用,可以随便写
  1. 方法二,在将内容写入缓存后,一定要用Flush()方法将缓存内容写入文件.否则无效.
  2. 方法三的第三个参数与方法一中的参数要求相同,方法三的写入方法同方法一中的第二个函数,即清空写入(覆盖写入).如果是追加写入,请注意

后记:

代码后面的注释基本已经比较完整.
写文件的操作也是我们的基本的操作.方法比较多,可以选择一种来习惯.其他的方法略知即可.

猜你喜欢

转载自blog.csdn.net/weixin_41810846/article/details/111654277