Go Básico: Manipulação de Arquivos
Todo desenvolvedor em algum momento já se deparou com a necessidade de manipular e escrever arquivos, não é mesmo? Em Go, existem algumas maneiras bem simples de resolvermos essa necessidade de forma rápida.
Para criar um novo arquivo e escrever algum conteúdo neste novo arquivo, podemos escrever o seguinte código.
package main
import (
"fmt"
"os"
)
func main() {
//Creating a new file
f, err := os.Create("test.txt")
if err != nil {
panic(err)
}
defer f.Close()
//Writing to the new file.
size, err := f.Write([]byte("Hello World!"))
if err != nil {
panic(err)
}
fmt.Printf("Size file: %d bytes", size)
//If the content of your file is only text, you can opt for this other function.
//size, err := f.WriteString("Hello World")
}
Agora que já criamos e escrevemos em um novo arquivo, podemos realizar a leitura deste arquivo com o seguinte código:
package main
import (
"fmt"
"os"
)
func main() {
content, err := os.ReadFile("test.txt")
if err != nil {
panic(err)
}
fmt.Println(string(content))
}
Em casos em que o arquivo que estamos lendo é grande, precisamos utilizar outra solução, pois da forma acima estamos carregando todo o arquivo na memória. Se o arquivo for extenso, isso pode causar problemas e utilizar todos os recursos disponíveis.
Para solucionar isso, podemos ler o arquivo por partes da seguinte forma:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
content, err := os.Open("test.txt")
if err != nil {
panic(err)
}
reader := bufio.NewReader(content)
buf := make([]byte, 5)
for {
n, err := reader.Read(buf)
if err != nil {
break
}
fmt.Printf("Size: %d bytes\n", n)
fmt.Printf("Content: %s\n", buf[:n])
}
}
Neste exemplo, configuramos para realizar a leitura de 5 bytes por vez.
Para finalizar, podemos utilizar o seguinte código para remover arquivos:
package main
import (
"os"
)
func main() {
err := os.Remove("test.txt")
if err != nil {
panic(err)
}
}
Comentários
Postar um comentário