知识点 文件读写

package main

import (
"bufio"
"fmt"
"io/ioutil"
"os"
"time"
)

// os.Open
func read1(filepath string) string {
f, err := os.Open(filepath)
if err != nil {
panic(err)
}
defer f.Close()
chunks := make([]byte, 1024, 1024)
buf := make([]byte, 1024)
for {
n, err := f.Read(buf)
if err != nil || 0 == n {
break
}
chunks = append(chunks, buf[:n]...)
}
return string(chunks)
}

// bufio
func read2(filepath string) string {
file, err := os.Open(filepath)
if err != nil {
panic(err)
}
defer file.Close()
chunks := make([]byte, 1024, 1024)
f := bufio.NewReader(file)
buf := make([]byte, 1024)
for {
n, err := f.Read(buf)
if err != nil || 0 == n {
break
}
chunks = append(chunks, buf[:n]...)
}
return string(chunks)
}

// ioutil
func read3(filepath string) string {
file, err := os.Open(filepath)
if err != nil {
panic(err)
}
defer file.Close()
f, _ := ioutil.ReadAll(file)
txt := string(f)
return txt
}

func main() {
filepath := "somefile.txt"
t1 := time.Now()
read1(filepath)
elapsed1 := time.Since(t1)
fmt.Println("cost ", elapsed1)
t2 := time.Now()
read2(filepath)
elapsed2 := time.Since(t2)
fmt.Println("cost ", elapsed2)
t3 := time.Now()
read3(filepath)
elapsed3 := time.Since(t3)
fmt.Println("cost ", elapsed3)
}
posted @ 2019-08-17 15:25  初见未来  阅读(211)  评论(0编辑  收藏  举报