package main
import (
"bufio"
"bytes"
"fmt"
"io"
"io/ioutil"
"os"
)
func readFileStat() {
file, err := os.Open("./main.go")
if err != nil {
fmt.Printf("file open err %v", err)
}
defer file.Close()
info , _ := file.Stat()
fmt.Printf("%#v", info)
}
func readFromFileRead(){
file, err := os.Open("./main.go")
if err != nil {
fmt.Printf("file open err %v", err)
}
defer file.Close()
for {
var b [128]byte
n, err := file.Read(b[:])
if err == io.EOF {
fmt.Printf("end of file")
}
fmt.Printf(string(b[:]))
if n < 128 {
break
}
}
}
func readFromBufioReadString(){
file, err := os.Open("./main.go")
if err != nil {
fmt.Printf("file open err %v", err)
}
defer file.Close()
buf := bufio.NewReader(file)
for{
str, err := buf.ReadString('\n')
if err == io.EOF{
fmt.Println("end of file")
break
}
fmt.Println(str)
}
}
func readFromBufioReadLine(){
file, err := os.Open("./main.go")
if err != nil {
fmt.Printf("file open err %v", err)
}
defer file.Close()
buf := bufio.NewReader(file)
for{
line, _, err := buf.ReadLine()
if err == io.EOF {
break
}
fmt.Println(string(line))
}
}
func readFromBufioNewScannerText(){
file, err := os.Open("./main.go")
if err != nil {
fmt.Printf("file open err %v", err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan(){
fmt.Println(scanner.Text())
}
file.Seek(0, 0)
fmt.Println("用buffer讀取")
scanner = bufio.NewScanner(file)
buffer := bytes.Buffer{}
for scanner.Scan() {
buffer.WriteString(scanner.Text())
buffer.WriteString("\n")
}
fmt.Println(buffer.String())
}
func readFromIoutil(){
b, err := ioutil.ReadFile("./main.go")
if err != nil {
fmt.Printf("file read errL:%v", err)
}
fmt.Print(string(b))
}
func main() {
readFromIoutil()
}