• golang 写文件4种方式


    package main
    
    import (
    	"bufio" //缓存IO
    	"fmt"
    	"io"
    	"io/ioutil" //io 工具包
    	"os"
    )
    
    func check(e error) {
    	if e != nil {
    		panic(e)
    	}
    }
    
    /**
     * 判断文件是否存在  存在返回 true 不存在返回false
     */
    func checkFileIsExist(filename string) bool {
    	var exist = true
    	if _, err := os.Stat(filename); os.IsNotExist(err) {
    		exist = false
    	}
    	return exist
    }
    
    func main() {
    	var wireteString = "测试n"
    	var filename = "./output1.txt"
    	var f *os.File
    	var err1 error
    	/***************************** 第一种方式: 使用 io.WriteString 写入文件 ***********************************************/
    	if checkFileIsExist(filename) { //如果文件存在
    		f, err1 = os.OpenFile(filename, os.O_APPEND, 0666) //打开文件
    		fmt.Println("文件存在")
    	} else {
    		f, err1 = os.Create(filename) //创建文件
    		fmt.Println("文件不存在")
    	}
    	check(err1)
    	n, err1 := io.WriteString(f, wireteString) //写入文件(字符串)
    	check(err1)
    	fmt.Printf("写入 %d 个字节n", n)
    
    	/*****************************  第二种方式: 使用 ioutil.WriteFile 写入文件 ***********************************************/
    	var d1 = []byte(wireteString)
    	err2 := ioutil.WriteFile("./output2.txt", d1, 0666) //写入文件(字节数组)
    	check(err2)
    
    	/*****************************  第三种方式:  使用 File(Write,WriteString) 写入文件 ***********************************************/
    	f, err3 := os.Create("./output3.txt") //创建文件
    	check(err3)
    	defer f.Close()
    	n2, err3 := f.Write(d1) //写入文件(字节数组)
    	check(err3)
    	fmt.Printf("写入 %d 个字节n", n2)
    	n3, err3 := f.WriteString("writesn") //写入文件(字节数组)
    	fmt.Printf("写入 %d 个字节n", n3)
    	f.Sync()
    
    	/***************************** 第四种方式:  使用 bufio.NewWriter 写入文件 ***********************************************/
    	w := bufio.NewWriter(f) //创建新的 Writer 对象
    	n4, err3 := w.WriteString("bufferedn")
    	fmt.Printf("写入 %d 个字节n", n4)
    	w.Flush()
    	f.Close()
    }
  • 相关阅读:
    python设计模式-单例模式
    bash脚本条件测试总结
    Python网络编程:IO多路复用
    Python面向对象高级编程:@property--把方法变为属性
    Sql Server存储过程基本语法
    接口幂等性
    [转载]使用消息队列实现分布式事务-公认较为理想的分布式事务解决方案
    C#分布式事务解决方案-TransactionScope
    SOA架构和微服务架构的区别
    Atlas实现数据库读写分离
  • 原文地址:https://www.cnblogs.com/china-golang/p/15090407.html
Copyright © 2020-2023  润新知