Go 語法範例:暫存檔案和目錄

在程式的執行期間,我們通常會想建立一個在程式退出後不再需要的資料。暫存檔案和目錄相當適用於這個目的,因為它們不會長久佔據您的檔案系統。

package main
import (
    "fmt"
    "os"
    "path/filepath"
)
func check(e error) {
    if e != nil {
        panic(e)
    }
}
func main() {

建立暫存檔案最簡單的方法是呼叫 `os.CreateTemp`。它會建立一個檔案開啟它以供讀寫。我們提供了 "" 作為第一個引數,所以 os.CreateTemp 會在作業系統的預設位置建立該檔案。

    f, err := os.CreateTemp("", "sample")
    check(err)

顯示暫存檔案的名稱。在基於 Unix 的作業系統上,目錄可能為 /tmp。檔案名稱開頭為提供給 os.CreateTemp 第二個引數的前綴字元,而其餘字元會自動選擇,以確保同時呼叫時會永遠建立不同的檔案名稱。

    fmt.Println("Temp file name:", f.Name())

在處理完畢後清除檔案。作業系統可能在一段時間後自動清除暫存檔案,但明確地執行這項操作仍然是良好的習慣。

    defer os.Remove(f.Name())

我們可以在檔案中寫入一些資料。

    _, err = f.Write([]byte{1, 2, 3, 4})
    check(err)

如果我們打算寫入許多暫存檔案,我們可能比較偏好建立一個暫存目錄os.MkdirTemp 的引數與 CreateTemp 相同,但它回傳目錄名稱,而非開啟的檔案。

    dname, err := os.MkdirTemp("", "sampledir")
    check(err)
    fmt.Println("Temp dir name:", dname)
    defer os.RemoveAll(dname)

現在我們可以用暫存目錄作為前綴字元來綜合暫存檔案的名稱。

    fname := filepath.Join(dname, "file1")
    err = os.WriteFile(fname, []byte{1, 2}, 0666)
    check(err)
}
$ go run temporary-files-and-directories.go
Temp file name: /tmp/sample610887201
Temp dir name: /tmp/sampledir898854668

下一個範例:嵌入式指令