Arbeid med filer og kataloger er en viktig oppgave for programmer som trenger å lagre og hente data. Go gir filbanepakken for plattformuavhengige filbaneoperasjoner. Pakken inneholder funksjoner for å manipulere filstier, og den er kompatibel med Windows, Linux og macOS.
Funksjonene som filbane inkluderer kan slå sammen, dele og rense filbaner for å sikre at de er gyldige. Pakken har også funksjoner for å gå kataloger og søke etter filer.
MAKEUSE AV DAGENS VIDEO
Gående katalogtrær
De Gå funksjonen til filbane pakken gir funksjonalitet for å gå et katalogtre og gå gjennom filer og kataloger på en forhåndsbestillingsmåte. Den vil rekursivt besøke alle kataloger under den gitte roten. Walk-funksjonen tar inn en rotkatalog og en funksjon som tar inn banen, filinformasjonsforekomsten og en feilforekomst.
package main
import (
"fmt"
"path/filepath"
"os"
)
func main() {
// Defines the root directory to start the walk
root := "."
// Uses the Walk function to walk the directory tree
err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
// Prints the name of each file or directory
fmt.Println(path)
return nil
})
// Checks for errors
if err != nil {
fmt.Printf("Error walking directory tree: %v\n", err)
}
}
Dette programmet definerer rotkatalogen som gjeldende arbeidskatalog. De hoved- funksjonen går gjennom katalogene i rotkatalogen og skriver ut navnene på filene.
Matchende filer med mønstermatching
Du kan bruke Kamp funksjon for å matche filnavn mot et mønster. Mønstersyntaksen er basert på det vanlige fil-jokertegnsyntaks, som bruker metategn , kjent som glob-mønstre i Unix-miljøer.
package main
import (
"fmt"
"path/filepath"
)
func main() {
// Defines the pattern to match
pattern := "*.txt"
// Uses the Match function to match the pattern on files
match, err := filepath.Match(pattern, "file.txt")
if err != nil {
fmt.Printf("Error matching pattern: %v\n", err)
return
}
// Prints the result of the match
if match {
fmt.Println("File matches pattern.")
} else {
fmt.Println("File does not match pattern.")
}
}
De hoved- funksjonen samsvarer med et filnavn mot *.tekst mønster og skriver ut en streng avhengig av resultatet av den betingede erklæringen .
Rengjøringsbaner med rensefunksjonen
De Ren funksjonen tar inn en filbane og returnerer en renset versjon av en bane ved å fjerne unødvendige skilletegn og katalogendringer, som f.eks. . (nåværende katalog) og .. (overordnet katalog) segmenter.
Rensing av filstier er nyttig siden det bidrar til å unngå feil hvis en bane inneholder redundante skilletegn eller ugyldige segmenter, eller konstruerer stier uavhengig av gjeldende arbeidskatalog.
package main
import (
"fmt"
"path/filepath"
)
func main() {
// Creates a path with redundant separators and invalid segments
path := "/foo/bar//baz/.././qux/"
// Cleans the path
cleanPath := filepath.Clean(path)
// Prints the original and cleaned file paths
fmt.Println("Original path:", path)
fmt.Println("Cleaned path:", cleanPath)
}
De sti variabel er den første filbanen, og Ren funksjonen renser sti variabel og returnerer den rensede filbanen. De hoved- funksjonen skriver ut de innledende og rene filbanene.
Sammenføyning og splitting av filbaner i Go
De Bli med og Dele funksjoner gir funksjonalitet for å slå sammen og dele filbaner.
Join-funksjonen tar inn et hvilket som helst antall baneelementer. Den returnerer en enkelt filbanestreng som er et resultat av å sette sammen disse elementene ved å bruke riktig baneseparator for operativsystemet. De Bli med funksjonen er nyttig for å konstruere filstier uavhengig av det underliggende filsystemet.
package main
import (
"fmt"
"path/filepath"
)
func main() {
// Defines four file paths for the join operation
path1 := "folder1"
path2 := "folder2"
path3 := "subfolder1"
path4 := "example.txt"
// Joins the four file paths together into a single path
joinedPath := filepath.Join(path1, path2, path3, path4)
// Print the unified file path
fmt.Println("Joined Path:", joinedPath)
}
De sti1 , sti2 , og sti3 variabler er mappenavn, og sti4 variabel er et filnavn. De Bli med funksjonen tar inn banevariabelnavnene og returnerer den sammenknyttede filbanen. De hoved- funksjonen skriver ut den sammenknyttede filbanen til konsollen med fmt pakke.
De Dele funksjonen tar inn en banestreng og returnerer banens katalog og filnavnkomponenter. De Dele funksjonen er nyttig for å trekke ut filnavn eller bestemme overordnet katalog for en fil.
package main
import (
"fmt"
"path/filepath"
)
func main() {
// Sets the file path for the split operation
filePath := "/home/user/documents/example.txt"
// Use the Split function to split the file path
// into its directory and file components
dir, file := filepath.Split(filePath)
// Print the directory and file components
fmt.Println("Directory:", dir)
fmt.Println("File:", file)
}
De filbane variabel er den opprinnelige filbanen, og Dele funksjonen tar inn filbane variabel og returnerer katalogen og filnavnene som strenger. De hoved- funksjonen skriver ut katalogen og filnavnene til konsollen.
Du kan manipulere tekstfiler med Go
Ved siden av filsystemfunksjonalitet tilbyr Go pakker som hjelper deg med å jobbe med flere filtyper, inkludert tekstfiler.
beste stemme til tekst -app android
Du kan bruke bufio pakke til bufret inn- og utdataoperasjoner på tekstfiler og du pakke for å lage filer, blant andre operasjoner.