今天主要介绍Go的io.ioutil标准库使用
package ioutil
ReadAll 读取 r 中的所有数据,返回读取的数据和遇到的错误。
如果读取成功,则 err 返回 nil,而不是 EOF,因为 ReadAll 定义为读取
所有数据,所以不会把 EOF 当做错误处理。
func ReadAll(r io.Reader) ([]byte, error)
例子:
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
resp, err := http.Get("http://www.163.com")
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
ReadDir 读取指定目录中的所有目录和文件(不包括子目录)。
返回读取到的文件信息列表和遇到的错误,列表是经过排序的。
func ReadDir(dirname string) ([]os.FileInfo, error)
例子:
import (
"fmt"
"io/ioutil"
)
func main() {
dir_list, e := ioutil.ReadDir("d:/2")
if e != nil {
fmt.Println("read dir error")
return
}
for i, v := range dir_list {
fmt.Println(i, "=", v.Name())
if v.IsDir() == true {
fmt.Println(v.Name(), "是目录")
}
}
}
ReadFile 读取文件中的所有数据,返回读取的数据和遇到的错误。
如果读取成功,则 err 返回 nil,而不是 EOF
func ReadFile(filename string) ([]byte, error)
例子:
import (
"fmt"
"io/ioutil"
)
func main() {
data,err:= ioutil.ReadFile("d://test.txt")
if err!=nil{
fmt.Println(err)
return
}
fmt.Println(string(data))
}
WriteFile 向文件中写入数据,写入前会清空文件。
如果文件不存在,则会以指定的权限创建该文件。
返回遇到的错误。
func WriteFile(filename string, data []byte, perm os.FileMode) error
例子:
import (
"fmt"
"io/ioutil"
)
func main() {
data:= []byte("hello world")
err:= ioutil.WriteFile("d://test.txt", data, 0644)
if err!=nil{
fmt.Println(err)
}
}