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.
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("删除成功") } }
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("删除成功") } }
Ergebnisse der Codeausführung:
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("删除成功") } }
Codeausführungsergebnis:
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("删除成功") } }
Codeausführungsergebnis:
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
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!