首頁 >後端開發 >Golang >golang怎麼刪除文件

golang怎麼刪除文件

青灯夜游
青灯夜游原創
2022-12-19 10:10:088394瀏覽

在golang中,可以利用os套件內建的Remove()或RemoveAll()函數來刪除文件,語法「os.Remove(path)」或「os.RemoveAll(path)」。在刪除檔案時,RemoveAll()和Remove()方法沒有太大的差別;但是在刪除目錄時,Remove()只能刪除空白目錄,而RemoveAll()不受任何限制,都可以刪除。

golang怎麼刪除文件

本教學操作環境: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("删除成功")
	}
}

程式碼執行結果:

golang怎麼刪除文件

#刪除目錄

golang怎麼刪除文件

#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("删除成功")
	}
}

程式碼執行結果:

golang怎麼刪除文件

#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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn