基本檔案 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
})