每日一個 Golang Packages 06/06 os File

Aliliin發表於2020-06-06

2020/06/06

package main

import (
    "fmt"
    "os"
    "path/filepath"
)

func main() {
    // 檔案資訊 
    fileInfo, err := os.Stat("/Users/aliliin/go_code/Learn-golang/file.txt")
    if err != nil {
        fmt.Println(err)
    }
    // 檔名
    fmt.Println(fileInfo.Name()) // 檔名字
    fmt.Println(fileInfo.Size()) // 檔案大小
    fmt.Println(fileInfo.IsDir()) // 是否是目錄
    fmt.Println(fileInfo.ModTime()) // 最後一次修改時間
    fmt.Println(fileInfo.Mode()) // 檔案型別和許可權 -rw-r--r--

    // 路徑查詢
    filePath1 := "/Users/aliliin/go_code/Learn-golang/file.txt"
    filePath2 := "file.txt"

    //是否是絕對路徑
    fmt.Println(filepath.IsAbs(filePath1)) //true
    fmt.Println(filepath.IsAbs(filePath2)) // flse
    // 獲取絕對路徑
    fmt.Println(filepath.Abs(filePath1))
    fmt.Println(filepath.Abs(filePath2)) // /Users/aliliin/go_code/Learn-golang/file.txt

    // 獲取上一層目錄
    fmt.Println(filepath.Join(filePath1, ".."))

    // 建立檔案
    // Create 採用模式是 0666(任何人可讀寫,不可執行)
    // 如果檔案存在會(清空檔案原內容)
    fileName, err := os.Create("/Users/aliliin/go_code/Learn-golang/file.txt")
    if err != nil {
       fmt.Println(err)
       return
    }

    // 建立一層資料夾目錄 、建立多層資料夾  os.MkdirAll()
    err := os.Mkdir("/Users/aliliin/go_code/Learn-golang/package/newdir", os.ModePerm)
    if err != nil {
       fmt.Println(err)
    } else {
       fmt.Println("資料夾建立成功")
    }

    // 開啟檔案
    file3, err := os.Open(filePath1)
    if err != nil {
       fmt.Println(err)
       return
    }
    fmt.Println(file3)
    // 寫檔案需要執行開啟檔案的格式
    file4, err := os.OpenFile(filePath1, os.O_RDWR, os.ModePerm)
    if err != nil {
       fmt.Println(err)
    }
    fmt.Println(file4)
    // 關閉檔案
    fmt.Println(file4.Close())

    // 刪除檔案和目錄 os.Remove("aa.txt")
    // 遞迴刪除目錄 os.RemoveAll()
}

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

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

本作品採用《CC 協議》,轉載必須註明作者和本文連結
微信搜尋:上帝喜愛笨人

相關文章