临时文件_Go语言学习基础-文件路径、目录、临时文件和目录
File Path 文件路徑
filepath包提供了解析和構造文件路徑的函數,這種方法在操作系統之間是兼容的;例如,Linux上的dir/file與Windows上的dirfile都可以有效識別。
使用Join方法構造路徑,它接受任意數量的參數來構造路徑的層次結構。應該始終使用Join方法連接路徑,而不是手動連接。除了提供兼容性外,Join方法還將通過刪除多余的分隔符和目錄規范路徑。
Dir函數和Base函數可用于分割指路徑為目錄和文件名。函數Split則則可以同時返回兩者。
我們可以檢查路徑是否為絕對路徑。
某些文件名帶有擴展名,可以使用函數Ext將擴展名從文件名中分離出來。通過刪除擴展名獲得文件基名,請使用strings.TrimSuffix。
函數Rel在兩個目標之間查找相對路徑,如果沒有,則返回一個錯誤。
結果:
$ go run file-paths.go
p: dir1/dir2/filename
dir1/filename
dir1/filename
Dir(p): dir1/dir2
Base(p): filename
false
true
.json
config
t/file
../c/t/file
Directorie 目錄
Go有幾個有用的函數來處理文件系統中的目錄。
函數os.Mkdir在當前工作目錄中創建一個新的子目錄。如果是臨時目錄,最好推遲刪除它們,函數os.RemoveAll將刪除整個目錄樹(類似于rm -rf)。
ioutil.WriteFile函數創建新的空文件。
我們可以創建目錄層次結構,函數os.MkdirAll創建路徑上的所有目錄,這與命令行mkdir -p類似。
函數ioutil.ReadDir列出目錄內容,返回os.FileInfo對象列表的切片。
函數os.Chdir允許我們更改當前工作目錄,類似于命令行cd。
我們還可以遞歸地訪問目錄,包括所有子目錄。函數filepath.Walk的回調函數用于處理訪問的每個文件或目錄,程序中filepath.Walk遞歸地為每個文件或目錄調用visit。
結果:
$ go run directories.go
Listing subdir/parent
child true
file2 false
file3 false
Listing subdir/parent/child
file4 false
Visiting subdir
subdir true
subdir/file1 false
subdir/parent true
subdir/parent/child true
subdir/parent/child/file4 false
subdir/parent/file2 false
subdir/parent/file3 false
Temporary File and Directorie 臨時文件和目錄
在程序執行過程中,我們通常希望創建一在程序退出后不需要的數據。臨時文件和目錄對于這個目的很有用,因為它們在程序使用過后不會污染文件系統。
創建臨時文件最簡單的方法是調用ioutil.TempFile,它創建并打開一個文件進行讀寫。第一個參數為空字符串"",因此ioutil.TempFile將在操作系統的默認位置創建臨時文件。
方法Name顯示臨時文件的名稱。
在類Unix系統,臨時目錄可能是/tmp。ioutil.TempFile的第二個參數為臨時文件名的前綴,其余部分則自動產生,以確保并發創建時始終使用不同的文件名。
os.Remove推遲調用用于在使用完臨時數據后清理文件。操作系統很可能會在一段時間后自行清理臨時文件,但最好顯式地這樣做。
方法Write向文件中寫入一些數據。
如果要創建許多臨時文件,則可以創建一個臨時目錄用于放置它們。ioutil.TempDir的參數與ioutil.TempFile的參數相同,但是它返回一個目錄對象,而不是文件對象。
結果:
$ go run temporary-files-and-directories.go
Temp file name: /tmp/sample610887201
Temp dir name: /tmp/sampledir898854668
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的临时文件_Go语言学习基础-文件路径、目录、临时文件和目录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++中在浏览器打开html文件
- 下一篇: Matlab中特征选择reliefF算法