Como interagir com arquivos e diretórios em Go

Como interagir com arquivos e diretórios em Go
Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

Trabalhar com arquivos e diretórios é uma tarefa essencial para aplicativos que precisam armazenar e recuperar dados. Go fornece o pacote filepath para operações de caminho de arquivo independente de plataforma. O pacote inclui funções para manipular caminhos de arquivos e é compatível com Windows, Linux e macOS.





As funções incluídas no filepath podem unir, dividir e limpar caminhos de arquivo para garantir que sejam válidos. O pacote também possui funções para percorrer diretórios e procurar arquivos.





MAKEUSEDO VÍDEO DO DIA

Árvores de diretório ambulantes

O Andar função do caminho de arquivo O pacote fornece funcionalidade para percorrer uma árvore de diretórios e percorrer arquivos e diretórios de maneira pré-ordenada. Ele visitará recursivamente todos os diretórios abaixo da raiz especificada. A função Walk leva em um diretório raiz e uma função que leva no caminho, instância de informações de arquivo e uma instância de erro.





app mover do telefone para o cartão SD
 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)
    }
}

Este programa define o diretório raiz como o diretório de trabalho atual. O principal A função percorre os diretórios no diretório raiz e imprime os nomes dos arquivos.

  resultado de árvores de diretórios ambulantes

Correspondência de arquivos com correspondência de padrão

Você pode usar o Corresponder função para corresponder nomes de arquivos a um padrão. A sintaxe do padrão é baseada no comum sintaxe curinga de arquivo, que usa metacaracteres , conhecidos como padrões glob em ambientes Unix.



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

O principal função corresponde a um nome de arquivo com o *.TXT padrão e imprime uma string dependendo do resultado a declaração condicional .

Limpando caminhos com a função de limpeza

O Limpar A função pega um caminho de arquivo e retorna uma versão limpa de um caminho removendo separadores desnecessários e alterações de diretório, como . (diretório atual) e .. (diretório pai) segmentos.





A limpeza de caminhos de arquivo é útil, pois ajuda a evitar erros se um caminho contiver separadores redundantes ou segmentos inválidos ou construir caminhos independentes do diretório de trabalho atual.

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

O caminho variável é o caminho inicial do arquivo e o Limpar função limpa o caminho variável e retorna o caminho do arquivo limpo. O principal A função imprime os caminhos de arquivo iniciais e limpos.





  resultado de caminhos de limpeza com a função de limpeza

Juntando e dividindo caminhos de arquivos em Go

O Juntar e Dividir funções fornecem funcionalidade para unir e dividir caminhos de arquivo.

A função Join aceita qualquer número de elementos de caminho. Ele retorna uma única string de caminho de arquivo que resulta da concatenação desses elementos usando o separador de caminho apropriado para o sistema operacional. O Juntar A função é útil para construir caminhos de arquivos independentes do sistema de arquivos subjacente.

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

O caminho1 , caminho2 , e caminho3 variáveis ​​são nomes de pastas, e o path4 variável é um nome de arquivo. O Juntar A função recebe os nomes das variáveis ​​de caminho e retorna o caminho do arquivo concatenado. O principal A função imprime o caminho do arquivo concatenado para o console com o fmt pacote.

O Dividir A função recebe uma string de caminho e retorna o diretório do caminho e os componentes do nome do arquivo. O Dividir A função é útil para extrair nomes de arquivo ou determinar o diretório pai de um arquivo.

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

O caminho de arquivo variável é o caminho do arquivo original e o Dividir função leva em caminho de arquivo variável e retorna o diretório e os nomes dos arquivos como strings. O principal A função imprime o diretório e os nomes dos arquivos no console.

Você pode manipular arquivos de texto com Go

Juntamente com a funcionalidade do sistema de arquivos, o Go fornece pacotes para ajudá-lo a trabalhar com vários tipos de arquivos, incluindo arquivos de texto.

Você pode usar o bufio pacote para operações de entrada e saída em buffer em arquivos de texto e o os pacote para criação de arquivos, entre outras operações.