Hvordan samhandle med filer og kataloger i Go

Hvordan samhandle med filer og kataloger i Go
Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon. Les mer.

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 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.

  resultat fra Walking Directory Trees

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.





  resultat fra rengjøringsbaner med rensefunksjonen

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.