在golang中,可以利用os套件內建的Remove()或RemoveAll()函數來刪除文件,語法「os.Remove(path)」或「os.RemoveAll(path)」。在刪除檔案時,RemoveAll()和Remove()方法沒有太大的差別;但是在刪除目錄時,Remove()只能刪除空白目錄,而RemoveAll()不受任何限制,都可以刪除。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
在golang中,檔案刪除、檔案建立、檔案讀取和檔案寫入等,幾乎所有的檔案操作都是透過 os 套件完成的。所以如果要在 Golang 中管理文件,需要使用 Golang 內建的 os 套件。
要在 Golang 中刪除文件,請使用 os.Remove() 或os.RemoveAll()函數。 os.Remove()和os.RemoveAll()函 是內建的 Golang 函數,用於刪除檔案。提供該文件的文件路徑,可以刪除該文件。它刪除命名檔案或(空)目錄。
RemoveAll 函數跟 Remove 用法一樣,差異是會遞歸的刪除所有子目錄和檔案。今天我們就來看看二者的具體差異有哪些。
刪除檔案
os.Remove()
接下來,我們使用os. Remove() 方法刪除一個文件,因為我們要用程式碼進行驗證,在刪除前,我們首先需要建立一個文件test.txt,然後刪除它。以下是具體的程式碼:
package main import ( "os" "fmt" ) func main () { testFile := "test.txt" _, err := os.Create(testFile) //创建文件 if err != nil { fmt.Println("文件创建失败") } // 使用 os.Remove() 删除文件 err = os.Remove(testFile) if err != nil { fmt.Println("删除失败") } else { fmt.Println("删除成功") } }
os.RemoveAll()
#好了,透過上面的例子,我們可以看到os.Remove()方法刪除檔案還是很方便的。那麼,我們接下來看看 os.RemoveAll() 表現如何,還是剛才的程式碼,我們把刪除方法替換一下。修改後程式碼如下:
package main import ( "os" "fmt" ) func main () { testFile := "test.txt" _, err := os.Create(testFile) //创建文件 if err != nil { fmt.Println("文件创建失败") } // 使用 os.RemoveAll() 删除文件 err = os.RemoveAll(testFile) if err != nil { fmt.Println("删除失败") } else { fmt.Println("删除成功") } }
程式碼執行結果:
#刪除目錄
#os.Remove()
如果使用os.Remove() 刪除目錄是什麼效果呢?接下來直接看程式碼!
實例程式碼:
package main import ( "os" "fmt" ) func main () { testDir := "d1/d2/d3" // 创建多级目录 err := os.MkdirAll(testDir, os.ModePerm) if err != nil { fmt.Println("文件创建失败", err) } // 使用 os.Remove() 删除文件 err = os.Remove(testDir) if err != nil { fmt.Println("删除失败", err) } else { fmt.Println("删除成功") } }
程式碼執行結果:
#os.RemoveAll()那麼,os.RemoveAll() 方法刪除目錄是什麼效果呢?也直接看代碼吧!
實例程式碼:
package main import ( "os" "fmt" ) func main () { testDir := "d1/d2/d3" // 创建多级目录 err := os.MkdirAll(testDir, os.ModePerm) if err != nil { fmt.Println("文件创建失败", err) } // 使用 os.RemoveAll() 删除文件 err = os.RemoveAll(testDir) if err != nil { fmt.Println("删除失败") } else { fmt.Println("删除成功") } }
程式碼執行結果:
#現在發現,刪除目錄時,兩種方法效果也一樣,是不是二者沒有差別呢?答案是否定的。還是上面刪除目錄程式碼,如果我們刪除的不是目錄 d3,而是目錄 d2,會是什麼結果呢?修改程式碼後,我們最後發現os.RemoveAll() 方法完全沒有問題,但是os.Remove() 報錯了,報錯訊息如下:
remove d1/d2/: directory not empty是的,目錄d2 不是空的,因為還有子目錄d3,至此,我們終於發現了os.RemoveAll() 和os.Remove() 的差異。 ###說明:#########在刪除檔案時,os.RemoveAll() 和 os.Remove() 方法沒有太大的差異。但在刪除目錄時,os.Remove() 只能刪除空目錄,而 os.RemoveAll() 不受任何限制,都可以刪除。 ######【相關推薦:###Go影片教學###、###程式設計教學###】###
以上是golang怎麼刪除文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!