Go

Read File — Whole / Lines / Bytes

admin by @admin ADMIN
1h ago
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
Three common patterns: load it all (`os.ReadFile`), iterate line-by-line with `bufio.Scanner`, or stream chunks via `io.Reader`. Pick by file size.
Go
Raw
package main

import (
    "bufio"
    "fmt"
    "io"
    "os"
)

func main() {
    // Whole file → []byte (only for small/medium files)
    data, err := os.ReadFile("config.toml")
    if err != nil { panic(err) }
    fmt.Println(string(data))

    // Line-by-line — constant memory
    f, _ := os.Open("/etc/hosts")
    defer f.Close()
    scanner := bufio.NewScanner(f)
    for scanner.Scan() {
        line := scanner.Text()
        if line != "" { fmt.Println(line) }
    }
    if err := scanner.Err(); err != nil {
        fmt.Println("scan error:", err)
    }

    // Stream bytes in chunks — for binary or very large files
    big, _ := os.Open("/tmp/huge.bin")
    defer big.Close()
    buf := make([]byte, 4096)
    for {
        n, err := big.Read(buf)
        if n > 0 {
            // ... process buf[:n] ...
        }
        if err == io.EOF { break }
        if err != nil    { panic(err) }
    }
}
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.