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

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)
}
|