reading-files

reading files

原文:https://gobyexample.com/reading-files

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package main

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

func check(e error) {
	if e != nil {
		panic(e)
	}
}

func main() {
	dat, err := os.ReadFile("./tmp/dat.txt")
	check(err)
	fmt.Print(string(dat))
	//hello
	//go

	f, err := os.Open("./tmp/dat.txt")
	check(err)

	b1 := make([]byte, 5)
	n1, err := f.Read(b1)
	check(err)

	fmt.Printf("%d bytes: %s\n", n1, string(b1[:n1])) // 5 bytes: hello

	o2, err := f.Seek(6, 0)
	check(err)

	b2 := make([]byte, 2)
	n2, err := f.Read(b2)
	check(err)

	fmt.Printf("%d bytes @ %d: ", n2, o2) // 2 bytes @ 6:
	fmt.Printf("%v\n", string(b2[:n2]))   // g

	o3, err := f.Seek(6, 0)
	check(err)
	b3 := make([]byte, 2)
	n3, err := io.ReadAtLeast(f, b3, 2)
	check(err)
	fmt.Printf("%d bytes @ %d: %s\n", n3, o3, string(b3)) // 2 bytes @ 6:
	// g

	_, err = f.Seek(0, 0)
	check(err)

	r4 := bufio.NewReader(f)
	b4, err := r4.Peek(5)
	check(err)
	fmt.Printf("5 bytes: %s\n", string(b4)) // 5 bytes: hello

	f.Close()
}

./tmp/dat.txt

1
2
hello
go
最后修改 March 10, 2024: 更新 (ddf4687)