基本檔案 I/O#

import "os"

// 讀取整個檔案
data, err := os.ReadFile("file.txt")

// 寫入整個檔案
err := os.WriteFile("file.txt", []byte("content"), 0644)

// 開啟檔案
file, err := os.Open("file.txt")        // 唯讀
file, err := os.Create("new.txt")       // 建立(覆寫)
file, err := os.OpenFile("file.txt",
    os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644)  // 自訂模式

defer file.Close()

檔案資訊#

info, err := os.Stat("file.txt")
if os.IsNotExist(err) {
    fmt.Println("檔案不存在")
    return
}

fmt.Println("名稱:", info.Name())
fmt.Println("大小:", info.Size())
fmt.Println("修改時間:", info.ModTime())
fmt.Println("是否為目錄:", info.IsDir())
fmt.Println("權限:", info.Mode())

目錄操作#

// 建立目錄
os.Mkdir("dir", 0755)
os.MkdirAll("dir/sub/deep", 0755)  // 遞迴建立

// 列出目錄
entries, _ := os.ReadDir(".")
for _, entry := range entries {
    info, _ := entry.Info()
    fmt.Printf("%s %8d %s\n",
        info.Mode(), info.Size(), entry.Name())
}

// 遍歷目錄樹
filepath.Walk(".", func(path string, info os.FileInfo, err error) error {
    if err != nil {
        return err
    }
    fmt.Println(path)
    return nil
})