version: 1.9.2
package ioutil
import "io/ioutil"
概述
ioutil 包实现了一些实用的 I/O 函数。
索引
- Variables
- func NopCloser(r io.Reader) io.ReadCloser
- func ReadAll(r io.Reader) ([]byte, error)
- func ReadDir(dirname string) ([]os.FileInfo, error)
- func ReadFile(filename string) ([]byte, error)
- func TempDir(dir, prefix string) (name string, err error)
- func TempFile(dir, prefix string) (f *os.File, err error)
- func WriteFile(filename string, data []byte, perm os.FileMode) error
例子
文件
变量
Discard 是一个不做任何操作且永远返回成功的 io.Writer 实现。
func NopCloser
¶
- func NopCloser(r io.Reader) io.ReadCloser
NopCloser 函数把空 Close 方法和 r 封装成 ReadCloser 接口的实现返回。
func ReadAll
¶
ReadAll 函数从 r 读取数据直到遇到错误或者 EOF 并返回读取到的数据。读取成功返回 err == nil 而不是 err == EOF。因为 ReadAll 读取直到 EOF 的数据,所以它不会把 EOF 当作错误返回给用户。
r := strings.NewReader("Go is a general-purpose language designed with systems programming in mind.")
b, err := ioutil.ReadAll(r)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s", b)
// Output:
// Go is a general-purpose language designed with systems programming in mind.
func ReadDir
¶
ReadDir 函数从文件夹 dirname 中读取以文件名排序的文件信息列表。
files, err := ioutil.ReadDir(".")
if err != nil {
log.Fatal(err)
}
for _, file := range files {
fmt.Println(file.Name())
}
func ReadFile
¶
ReadFile 函数读取文件 filename 中的内容。读取成功返回 err == nil 而不是 err == EOF。因为 ReadFile 会读取整个文件的内容,所以不会将 EOF 当作一个错误返回。
content, err := ioutil.ReadFile("testdata/hello")
if err != nil {
log.Fatal(err)
}
fmt.Printf("File contents: %s", content)
// Output:
// File contents: Hello, Gophers!
func TempDir
¶
TempDir 在 dir 中创建一个名字以 prefix 作为前缀的临时文件夹并返回临时文件夹的路径。如果 dir 为空,TempDir 会使用临时文件的默认路径(详情请看 os.TempDir)。多个程序同时调用 TempDir 不会使用同一个文件夹。当用户不需要这个临时目录时需要手动删除。
content := []byte("temporary file's content")
dir, err := ioutil.TempDir("", "example")
if err != nil {
log.Fatal(err)
}
defer os.RemoveAll(dir) // clean up
tmpfn := filepath.Join(dir, "tmpfile")
if err := ioutil.WriteFile(tmpfn, content, 0666); err != nil {
log.Fatal(err)
}
func TempFile
¶
TempFile 函数在 dir 中创建前缀为 prefix 的临时文件,并打开该文件进行读写,返回 *os.File。如果 dir 为空,将使用默认的文件夹(详情请看 os.TempDir)。多个程序调用 TempFile 函数不会使用同一个文件。用户可以使用 f.Name() 来获取文件路径。当用户不再需要该文件时需要手动删除。
content := []byte("temporary file's content")
tmpfile, err := ioutil.TempFile("", "example")
if err != nil {
log.Fatal(err)
}
defer os.Remove(tmpfile.Name()) // clean up
if _, err := tmpfile.Write(content); err != nil {
log.Fatal(err)
}
if err := tmpfile.Close(); err != nil {
log.Fatal(err)
}
func WriteFile
¶
WriteFile 将数据写进文件 filename 中。该文件不存在时 WriteFile 会创建这个文件(需要有相应权限),如果文件已经存在 WriteFile 将会在写入之前覆盖它。