标签:bytes div close 场景 lease 图片 UNC ram city
有点全,但不是很全。
一次读入,分批次读入,缓存读入。
要记得这几种不同读取的应用场景。
package main
import (
"bufio"
"bytes"
"fmt"
"io"
"io/ioutil"
"os"
)
func main() {
if len(os.Args) != 2 {
fmt.Println("Please specify a path.")
return
}
b1, err := ioutil.ReadFile(os.Args[1])
if err != nil {
fmt.Println("Error: ", err)
}
fmt.Println(string(b1))
f1, err := os.Open(os.Args[1])
if err != nil {
fmt.Println("Error: ", err)
}
defer f1.Close()
var (
b2 = make([]byte, 16)
)
for n := 0; err == nil; {
n, err = f1.Read(b2)
if err == nil {
fmt.Print(string(b2[:n]))
}
}
for err != nil && err != io.EOF {
fmt.Println("\n\nError: ", err)
}
var b3 = bytes.NewBuffer(make([]byte, 26))
var texts = []string{
`As he came into the window`,
`It was the sound of a crescendo
He came into her apartment`,
`He left the bloodstains on the carpet`,
`She ran underneath the table
He could see she was unable
So she ran into the bedroom
She was struck down, it was her doom`,
}
for i := range texts {
b3.Reset()
b3.WriteString(texts[i])
fmt.Println("Length: ", b3.Len(), "\tCapacity: ", b3.Cap())
}
f2, err := os.Open(os.Args[1])
if err != nil {
fmt.Println("Error: ", err)
}
defer f2.Close()
r := bufio.NewReader(f2)
var rowCount int
for err == nil {
var b4 []byte
for moar := true; err == nil && moar; {
b4, moar, err = r.ReadLine()
if err == nil {
fmt.Print(string(b4))
}
}
if err == nil {
fmt.Println()
rowCount++
}
}
if err != nil && err != io.EOF {
fmt.Println("\nError: ", err)
return
}
fmt.Println("\nRow count: ", rowCount)
}

《Hands-On System Programming with Go》之读文件
标签:bytes div close 场景 lease 图片 UNC ram city
原文地址:https://www.cnblogs.com/aguncn/p/12045630.html