So löschen Sie Dateien in Golang

青灯夜游
Freigeben: 2022-12-19 10:10:08
Original
8313 Leute haben es durchsucht

In Golang können Sie die integrierte Funktion Remove() oder RemoveAll() im Betriebssystempaket verwenden, um Dateien zu löschen. Die Syntax lautet „os.Remove(path)“ oder „os.RemoveAll(path)“. Beim Löschen von Dateien gibt es keinen großen Unterschied zwischen den Methoden RemoveAll() und Remove(), aber beim Löschen von Verzeichnissen kann Remove() nur leere Verzeichnisse löschen, während RemoveAll() diese ohne Einschränkungen löschen kann.

So löschen Sie Dateien in Golang

Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.

In Golang werden fast alle Dateivorgänge wie Dateilöschung, Dateierstellung, Dateilesen und Dateischreiben über das Betriebssystempaket ausgeführt. Wenn Sie also Dateien in Golang verwalten möchten, müssen Sie das integrierte Betriebssystempaket von Golang verwenden.

Um Dateien in Golang zu löschen, verwenden Sie die Funktion os.Remove() oder os.RemoveAll(). Die Funktionen os.Remove() und os.RemoveAll() sind integrierte Golang-Funktionen zum Löschen von Dateien. Geben Sie den Dateipfad zur Datei an, die gelöscht werden kann. Es löscht benannte Dateien oder (leere) Verzeichnisse.

Die RemoveAll-Funktion wird genauso verwendet wie Remove, der Unterschied besteht darin, dass sie alle Unterverzeichnisse und Dateien rekursiv löscht. Heute werfen wir einen Blick auf die spezifischen Unterschiede zwischen den beiden.

Dateien löschen

os.Remove()

Als nächstes verwenden wir die Methode os.Remove(), um eine Datei zu löschen, da wir sie zuerst mithilfe von Code überprüfen müssen Sie müssen eine Datei test.txt erstellen und löschen. Das Folgende ist der spezifische Code:

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("删除成功")
	}
}
Nach dem Login kopieren

os.RemoveAll()

Okay, anhand des obigen Beispiels können wir sehen, dass die Methode os.Remove() immer noch sehr praktisch zum Löschen von Dateien ist. Sehen wir uns also an, wie sich os.RemoveAll() verhält. Es ist immer noch derselbe Code wie zuvor. Der geänderte Code lautet wie folgt:

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("删除成功")
	}
}
Nach dem Login kopieren

Ergebnisse der Codeausführung:

So löschen Sie Dateien in Golang

Verzeichnis löschen

os.Remove()

Was bewirkt die Verwendung von os.Remove() zum Löschen eines Verzeichnis? Schauen Sie sich als nächstes direkt den Code an!

Beispielcode:

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("删除成功")
	}
}
Nach dem Login kopieren

Codeausführungsergebnis:

So löschen Sie Dateien in Golang

os.RemoveAll()

Was bewirkt also das Löschen eines Verzeichnisses mit der Methode os.RemoveAll()? Schauen wir uns auch einfach den Code an!

Beispielcode:

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("删除成功")
	}
}
Nach dem Login kopieren

Codeausführungsergebnis:

So löschen Sie Dateien in Golang

Jetzt stelle ich fest, dass die beiden Methoden beim Löschen eines Verzeichnisses den gleichen Effekt haben. Gibt es keinen Unterschied zwischen den beiden? Die Antwort ist nein. Wenn wir immer noch den obigen Code zum Löschen von Verzeichnissen verwenden, was wird das Ergebnis sein, wenn wir das Verzeichnis d2 anstelle des Verzeichnisses d3 löschen?

Nachdem wir den Code geändert hatten, stellten wir schließlich fest, dass es kein Problem mit der Methode os.RemoveAll() gab, aber os.Remove() meldete einen Fehler. Die Fehlermeldung lautet wie folgt:

remove d1/d2/: directory not empty
Nach dem Login kopieren

Ja, das Verzeichnis d2 ist nicht vorhanden leer, weil es auch ein Unterverzeichnis gibt d3 An diesem Punkt haben wir endlich herausgefunden, was der Unterschied zwischen os.RemoveAll() und os.Remove() ist.

Hinweis:

Es gibt keinen großen Unterschied zwischen den Methoden os.RemoveAll() und os.Remove() beim Löschen von Dateien. Allerdings kann os.Remove() beim Löschen eines Verzeichnisses nur leere Verzeichnisse löschen, während os.RemoveAll() diese ohne Einschränkungen löschen kann.

【Verwandte Empfehlungen: Go-Video-Tutorial, Programmierunterricht

Das obige ist der detaillierte Inhalt vonSo löschen Sie Dateien in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!