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