Go 學習筆記(4) – 檔案

寫程式難免都需要與檔案做互動, 甚者還需要與資料庫溝通。這篇文章將紀錄Go 怎麼與檔案互動的部分……

首先是讀取檔案!

 1package main
 2
 3import (
 4    "bufio"
 5    "os"
 6    "fmt"
 7)
 8
 9func main(){
10    var numbers []string
11    file ,_ := os.Open("input.txt") // 使用open 開啟檔案
12    scanner := bufio.NewScanner(file) // 必須建立Scanner 這裡讓我有點想起C
13    for scanner.Scan(){ // 這裡的意思是逐行讀取
14      content := scanner.Text()
15	  numbers = append(numbers,content)
16	  if scanner.Err() != nil {
17	     fmt.Println("scan error")
18	  }
19    }
20	defer file.Close() //defer 會確保函式一定被調用,即便程式提早結束
21	fmt.Println(numbers)
22}

之後,就來示範怎麼寫入檔案吧?

 1package main
 2
 3import (
 4	"os"
 5	"fmt"
 6)
 7
 8func main() {
 9	file, _ := os.Create("output.txt")
10	// file.WriteString("Hello Write Content")
11	_, err := file.Write([]byte("Here is a string...."))
12	if (err != nil){
13		fmt.Println(err)
14		panic("error")
15	}
16	defer file.Close()
17}

然後附加檔案的話只要將上面建檔案的改一下即可

 1package main
 2
 3import (
 4	"os"
 5	"fmt"
 6)
 7
 8func main() {
 9	// 這裡改成openfile 而且要加後面的flag 和數字參數即可
10	file, _ := os.OpenFile("output.txt",os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
11	// file.WriteString("Hello Write Content")
12	_, err := file.Write([]byte("Here is a string...."))
13	if (err != nil){
14		fmt.Println(err)
15		panic("error")
16	}
17	defer file.Close()
18}

小君曰:這次耍廢點…..


Go 學習筆記(3): 做套件給別人用
Go 學習筆記(5): 非同步