ioutil包使用
这个包里面包含了操作文件,文件夹的相关函数
ReadAll函数
该函数读取r中的所有数据,不会把EOF当错误处理,读取成功err返回nil
func ReadAll(r io.Reader)([]byte,error)
例:
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func checkErr(err error) {
if err!=nil {
panic(err)
}
}
func main() {
rsp,err:=http.Get("http://www.baidu.com")
checkErr(err)
result,err:=ioutil.ReadAll(rsp.Body)
checkErr(err)
fmt.Println(string(result))
}
结果:
ReadDir函数
该函数读取指定目录下的所有目录(不包括子目录)和文件
func ReadDir(dirname string) ([]os.FileInfo, error)
例:
package main
import (
"fmt"
"io/ioutil"
)
func checkErr(err error) {
if err!=nil {
panic(err)
}
}
func main() {
result,err:=ioutil.ReadDir("/")
checkErr(err)
for _,v:=range result {
fmt.Println(v.Name())
}
}
结果:
ReadFile函数
该函数读取文件中所有数据,加了读写锁的
func ReadFile(filename string) ([]byte, error)
例:
package main
import (
"fmt"
"io/ioutil"
"path/filepath"
)
func checkErr(err error) {
if err!=nil {
panic(err)
}
}
func main() {
dir,err:=filepath.Abs(".")
checkErr(err)
result,err:=ioutil.ReadFile(dir+"/main/io.go")
checkErr(err)
fmt.Println(string(result))
}
结果:
WriteFile函数
该函数向文件写入数据,如果文件不存在则会以perm权限创建文件,写入前会清空文件,加了读写锁的
func WriteFile(filename string, data []byte, perm os.FileMode) error
例:
package main
import (
"io/ioutil"
"path/filepath"
)
func checkErr(err error) {
if err!=nil {
panic(err)
}
}
func main() {
dir,err:=filepath.Abs(".")
checkErr(err)
pwd:=dir+"/main/io.txt"
result,err:=ioutil.ReadFile(dir+"/main/io.go")
checkErr(err)
err=ioutil.WriteFile(pwd,result,0644)
checkErr(err)
}
结果:
TempDir函数
该函数用于存放编译过程的临时文件
func TempDir(dir, prefix string) (name string, err error)
例:
package main
import (
"io/ioutil"
"log"
"path/filepath"
)
func main() {
content := []byte("temporary file's test")
dir, err := ioutil.TempDir(".", "example")
if err != nil {
log.Fatal(err)
}
//defer os.RemoveAll(dir) //用于程序清除临时文件
tmpfn := filepath.Join(dir, "tmpfile")
if err := ioutil.WriteFile(tmpfn, content, 0666); err != nil {
log.Fatal(err)
}
}
结果:在当前目录创建了文件夹并在里面加入了tmpfile在tmpfile中写入了数据
TempFile函数
该函数在dir 目录中创建一个以 prefix 为前缀的临时文件 **如果dir为空则以哦是.TempDir为临时目录创建临时文件
func TempFile(dir, prefix string) (f *os.File, err error)
例:
package main
import (
"io/ioutil"
"log"
"os"
)
func main() {
content := []byte("temporary file's test")
tmpfile, err := ioutil.TempFile("", "example")
if err != nil {
log.Fatal(err)
}
defer os.Remove(tmpfile.Name()) // 清除临时文件
if _, err := tmpfile.Write(content); err != nil {
log.Fatal(err)
}
if err := tmpfile.Close(); err != nil {
log.Fatal(err)
}
}