Hur man interagerar med filer och kataloger i Go

Hur man interagerar med filer och kataloger i Go
Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

Att arbeta med filer och kataloger är en viktig uppgift för applikationer som behöver lagra och hämta data. Go tillhandahåller filsökvägspaketet för plattformsoberoende filsökvägsoperationer. Paketet innehåller funktioner för att manipulera filsökvägar och det är kompatibelt med Windows, Linux och macOS.





Funktionerna som filsökväg inkluderar kan sammanfoga, dela upp och rensa filsökvägar för att säkerställa att de är giltiga. Paketet har även funktioner för att gå kataloger och söka efter filer.





vad är alla troféer i snapchat
MAKEUSE AV DAGENS VIDEO

Gående katalogträd

De funktion av sökväg Paketet tillhandahåller funktionalitet för att gå i ett katalogträd och gå igenom filer och kataloger på ett förbeställningssätt. Den kommer rekursivt att besöka alla kataloger under den givna roten. Walk-funktionen tar in en rotkatalog och en funktion som tar in sökvägen, filinformationsinstansen och en felinstans.





 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)
    }
}

Detta program definierar rotkatalogen som den aktuella arbetskatalogen. De huvud funktionen går igenom katalogerna i rotkatalogen och skriver ut namnen på filerna.

  resultat från Walking Directory Trees

Matcha filer med mönstermatchning

Du kan använda Match funktion för att matcha filnamn mot ett mönster. Mönstersyntaxen är baserad på det gemensamma fil jokerteckensyntax, som använder metatecken , känd som globmönster 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 huvud funktionen matchar ett filnamn mot *.Text mönster och skriver ut en sträng beroende på resultatet av det villkorliga uttalandet .

Rengöringsvägar med rengöringsfunktionen

De Rena funktionen tar in en filsökväg och returnerar en rensad version av en sökväg genom att ta bort onödiga avgränsare och katalogändringar, som t.ex. . (nuvarande katalog) och .. (överordnad katalog) segment.





kan du spela ps3 på ps4

Att rensa filsökvägar är användbart eftersom det hjälper till att undvika fel om en sökväg innehåller redundanta separatorer eller ogiltiga segment, eller konstruerar sökvägar oberoende av den aktuella arbetskatalogen.

 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 väg variabeln är den ursprungliga filsökvägen och Rena funktionen rengör väg variabel och returnerar den rensade filsökvägen. De huvud funktionen skriver ut de initiala och rena filsökvägarna.





  resultat från rengöringsvägar med rengöringsfunktionen

Gå med och dela filvägar i Go

De Ansluta sig och Dela funktioner ger funktionalitet för att sammanfoga och dela filsökvägar.

Join-funktionen tar in valfritt antal banelement. Den returnerar en enda filsökvägssträng som är resultatet av att sammanfoga dessa element med hjälp av lämplig sökvägsseparator för operativsystemet. De Ansluta sig funktionen är användbar för att konstruera filsökvägar oberoende av det underliggande filsystemet.

Windows 10 diskanvändning 100 procent
 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 väg1 , väg 2 , och väg 3 variabler är mappnamn och väg 4 variabel är ett filnamn. De Ansluta sig funktionen tar in sökvägsvariabelns namn och returnerar den sammanlänkade filsökvägen. De huvud funktionen skriver ut den sammanlänkade filsökvägen till konsolen med fmt paket.

De Dela funktionen tar in en sökvägssträng och returnerar sökvägens katalog- och filnamnskomponenter. De Dela funktionen är användbar för att extrahera filnamn eller bestämma överordnad katalog för 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 sökväg variabeln är den ursprungliga filsökvägen och Dela funktionen tar in sökväg variabel och returnerar katalogen och filnamnen som strängar. De huvud funktionen skriver ut katalogen och filnamnen till konsolen.

Du kan manipulera textfiler med Go

Vid sidan av filsystemfunktioner tillhandahåller Go paket som hjälper dig att arbeta med flera filtyper, inklusive textfiler.

Du kan använda bufio paket till buffrade in- och utdataoperationer på textfiler och du paket för att skapa filer, bland annat.