标签:err nil fmt Programming System Println b3 之读 os
有点全,但不是很全。
一次读入,分批次读入,缓存读入。
要记得这几种不同读取的应用场景。
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) }
标签:err,nil,fmt,Programming,System,Println,b3,之读,os 来源: https://www.cnblogs.com/aguncn/p/12045630.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。