Golang理解-io注意事项
io处理的选择方式
io处理有很多方法,系统也为我们提供了几个包io
、ioutil
、bufio
注册事项
- 如果字符串大小不大,使用那个都行
- 如果字符串过大,则需要使用bufio以及io包的一些方法
ioutils.ReadString(f),会将f文件全部读取为一个字符串, 对内存开销大
io.Copy(dest, src), 可以将src的内容流式copy到dest中
ioutil.Discard 垃圾桶
例如:
package main
import (
"fmt"
"io"
// "io/ioutil"
"net/http"
"os"
)
func main() {
if len(os.Args[1:]) < 1 {
fmt.Println("At least 1 params")
os.Exit(1)
}
for _, url := range os.Args[1:] {
res, err := http.Get(url)
if err != nil {
fmt.Println(err)
continue
}
f, _ := os.OpenFile("./a.log", os.O_APPEND|os.O_WRONLY, os.ModeAppend)
defer f.Close()
_, err = io.Copy(f, res.Body)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
// data, err := ioutil.ReadAll(res.Body)
defer res.Body.Close()
}
}