Golang簡單寫文件操作的四種方法


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
}

/**
  from: http://www.isharey.com/?p=143
*/

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()
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM