每日一個 Golang Packages 06/08 os ioutil

Aliliin發表於2020-06-08

2020/06/08

package main

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

func main() {
  // 讀取檔案中的所有資料 無需手動關閉開啟的檔案
  fileName := "/Users/gaoyongli/sites/Learn-golang/file.txt"
  data, err := ioutil.ReadFile(fileName)
  fmt.Println(err)
  fmt.Println(string(data)) // abcdefghijABC

 // 寫入資料 (寫入之前會先清空這個檔案) 
  fileName1 := "/Users/gaoyongli/sites/Learn-golang/files.txt"
  s1 := "你好 hello world "
  error := ioutil.WriteFile(fileName1, []byte(s1), os.ModePerm)
  fmt.Println(error) // nil

 // ReadAll()  s2 := "hello world"
  r1 := strings.NewReader(s2)
  data1, err1 := ioutil.ReadAll(r1)
  fmt.Println(err1)
  fmt.Println(string(data1))

  // 讀取當前目錄下的檔案(不保含子目錄下目錄)
  dirName := "/Users/gaoyongli/sites/Learn-golang"
  fileInfo, err := ioutil.ReadDir(dirName)
  if err != nil {
     fmt.Println(err)
     return
  }
  fmt.Println(len(fileInfo)) // 我的目錄下 14 項, 隱藏檔案也能查到
  for i := 0; i < len(fileInfo); i++ {
      fmt.Printf("第 %d 個檔名稱: %s,是不是目錄:%t\n", i, fileInfo[i].Name(), fileInfo[i].IsDir())
      /**
     第 0 個檔名稱: .DS_Store,是不是目錄:false 
     第 1 個檔名稱: .git,是不是目錄:true 
     */ 
 }

  //  建立臨時目錄(定義的名字和隨機生成的字串) 建立臨時檔案
  dir, err := ioutil.TempDir("/Users/gaoyongli/sites/Learn-golang", "test")
  if err != nil {
      fmt.Println(err)
      return
  }
  defer os.Remove(dir) // 不用就刪除
  fmt.Println(dir) // /Users/gaoyongli/sites/Learn-golang/test441916090
  dirFile, err := ioutil.TempFile(dir, "test")
  if err != nil {
      fmt.Println(err)
      return
  }
  defer os.Remove(dirFile.Name()) // 不用就刪除
  fmt.Println(dirFile.Name()) // /Users/gaoyongli/sites/Learn-golang/test441916090/test359195345
}

順便佛系一下用 go 做做 leetcode 的練習題同步到了 GitHub 大家也可以看看。

一步一個腳印,穩紮穩打,重新出發!從基本的 Golang Packages 記憶開始,堅持 ing!

本作品採用《CC 協議》,轉載必須註明作者和本文連結

高永立

相關文章