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