Die Feststellung, ob eine Datei vorhanden ist, ist eine sehr häufige Anforderung, und es gibt viele Lösungen, um diese Funktion in Golang zu erreichen.
Plattformübergreifende Implementierung
Die Idee der plattformübergreifenden Implementierung ist sehr einfach. Wenn eine Datei nicht vorhanden ist, wird die Verwendung von os.Lstat definitiv zurückgegeben Ein Fehler. Beurteilen Sie einfach den Fehler. Es bedeutet lediglich, dass die Datei nicht existiert.
Vielleicht ist Ihnen aufgefallen, dass einige Codes os.Open verwenden, um die obige Arbeit abzuschließen, aber es ist am besten, dies nicht zu tun, denn obwohl es keinen Unterschied in den von den beiden ausgeführten Funktionen gibt, ist der Aufrufaufwand höher open und stat sind unterschiedlich. Letzteres ist kleiner als Ersteres, und um festzustellen, ob eine Datei existiert, ist es sinnvoller, ihre Metadaten zu überprüfen, als direkt zu versuchen, sie zu öffnen.
Dann werfen wir einen Blick auf den implementierten Code:
func FileExist(path string) bool { _, err := os.Lstat(path) return !os.IsNotExist(err) }
POSIX-Plattform-Implementierung
Wenn Ihr Programm für die POSIX-Plattform ist (z. B. UNIX, Linux usw.), dann gibt es eine einfachere Lösung - syscall.Access.
syscall.Access bietet Benutzern die Möglichkeit, Dateimetainformationen zu überprüfen. Es wird normalerweise verwendet, um Dateiberechtigungen und das Vorhandensein von Dateien zu überprüfen.
Überprüfen Sie die Datei mithilfe des Flags syscall.F_OK. Wenn sie nicht vorhanden ist, wird derselbe Fehler wie bei os.Lstat zurückgegeben:
func FileExist(path string) bool { err := syscall.Access(path, syscall.F_OK) return !os.IsNotExist(err) }
Der größte Vorteil dieser Implementierung besteht darin, dass sie ist einfach und intuitiv, aber unter Windows nicht verfügbar.
Weitere Golang-Kenntnisse finden Sie in der Spalte Golang-Tutorial auf der chinesischen PHP-Website.
Das obige ist der detaillierte Inhalt vonGolang liest, ob die Datei existiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!