Publicado em

Ficheiros (Escrever) em Go

Partilhar:

Introdução

A manipulação de ficheiros é um dos pilares da programação. Seja para registar dados, ler configurações ou guardar logs, é fundamental saber como interagir com ficheiros. Go, com sua vasta biblioteca padrão, fornece inúmeras ferramentas para lidar com essa necessidade.

Criação e Abertura de Ficheiros

Antes de poder escrever num ficheiro, temos que criar ou abrir um. A função os.Create é perfeita para este propósito.

package main

import (
  "fmt"
  "os"
)

func main() {
  ficheiro, err := os.Create("meuFicheiro.txt")

  if err != nil {
    fmt.Println("Erro ao criar o ficheiro:", err)
    return
  }

  defer ficheiro.Close()
}

O uso de defer assegura que, após a execução do programa, o ficheiro seja fechado, prevenindo vazamentos de memória.

Escrevendo no Ficheiro

Com o ficheiro disponível, é possível utilizar o método WriteString para escrever no mesmo.

texto := "Olá, mundo!"
_, err = ficheiro.WriteString(texto)

if err != nil {
  fmt.Println("Erro ao escrever no ficheiro:", err)
  return
}

Tratamento de Erros

É crucial tratar erros ao trabalhar com I/O de ficheiros. Ignorar erros pode resultar em ficheiros corrompidos ou perda de dados.

if err != nil {
  log.Fatalf("Falhou escrevendo para o ficheiro: %s", err)
}

Permissões de Ficheiros

Ao criar um ficheiro, Go atribui permissões padrão. No entanto, pode ser necessário ajustar estas permissões.

ficheiro.Chmod(0644)

Anexar a Ficheiros

Em vez de sobrescrever um ficheiro, pode ser útil anexar dados ao seu final.

ficheiro, err = os.OpenFile("meuFicheiro.txt", os.O_APPEND|os.O_WRONLY, 0644)

Usando o pacote bufio

Para operações mais avançadas, bufio é a escolha certa. Proporciona uma interface buffered, otimizando a escrita.

import (
  "bufio"
)

escritor := bufio.NewWriter(ficheiro)
_, err = escritor.WriteString("Usando bufio para escrever de forma mais eficiente.")
escritor.Flush()

Conclusão

A habilidade de escrever em ficheiros é essencial para muitas tarefas em Go. Com suas bibliotecas ricas e abrangentes, Go simplifica e otimiza este processo, garantindo que os desenvolvedores possam focar na lógica do aplicativo, em vez de detalhes de I/O.

Happy coding!