version: 1.9.2

package ioutil

import "io/ioutil"

概述

ioutil 包实现了一些实用的 I/O 函数。

索引

例子

文件

ioutil.go tempfile.go

变量

  1. var Discard io.Writer = devNull(0)

Discard 是一个不做任何操作且永远返回成功的 io.Writer 实现。

func NopCloser

  1. func NopCloser(r io.Reader) io.ReadCloser

NopCloser 函数把空 Close 方法和 r 封装成 ReadCloser 接口的实现返回。

func ReadAll

  1. func ReadAll(r io.Reader) ([]byte, error)

ReadAll 函数从 r 读取数据直到遇到错误或者 EOF 并返回读取到的数据。读取成功返回 err == nil 而不是 err == EOF。因为 ReadAll 读取直到 EOF 的数据,所以它不会把 EOF 当作错误返回给用户。


例:

  1. r := strings.NewReader("Go is a general-purpose language designed with systems programming in mind.")
  2. b, err := ioutil.ReadAll(r)
  3. if err != nil {
  4. log.Fatal(err)
  5. }
  6. fmt.Printf("%s", b)
  7. // Output:
  8. // Go is a general-purpose language designed with systems programming in mind.

func ReadDir

  1. func ReadDir(dirname string) ([]os.FileInfo, error)

ReadDir 函数从文件夹 dirname 中读取以文件名排序的文件信息列表。


例:

  1. files, err := ioutil.ReadDir(".")
  2. if err != nil {
  3. log.Fatal(err)
  4. }
  5. for _, file := range files {
  6. fmt.Println(file.Name())
  7. }

func ReadFile

  1. func ReadFile(filename string) ([]byte, error)

ReadFile 函数读取文件 filename 中的内容。读取成功返回 err == nil 而不是 err == EOF。因为 ReadFile 会读取整个文件的内容,所以不会将 EOF 当作一个错误返回。


例:

  1. content, err := ioutil.ReadFile("testdata/hello")
  2. if err != nil {
  3. log.Fatal(err)
  4. }
  5. fmt.Printf("File contents: %s", content)
  6. // Output:
  7. // File contents: Hello, Gophers!

func TempDir

  1. func TempDir(dir, prefix string) (name string, err error)

TempDir 在 dir 中创建一个名字以 prefix 作为前缀的临时文件夹并返回临时文件夹的路径。如果 dir 为空,TempDir 会使用临时文件的默认路径(详情请看 os.TempDir)。多个程序同时调用 TempDir 不会使用同一个文件夹。当用户不需要这个临时目录时需要手动删除。


例:

  1. content := []byte("temporary file's content")
  2. dir, err := ioutil.TempDir("", "example")
  3. if err != nil {
  4. log.Fatal(err)
  5. }
  6. defer os.RemoveAll(dir) // clean up
  7. tmpfn := filepath.Join(dir, "tmpfile")
  8. if err := ioutil.WriteFile(tmpfn, content, 0666); err != nil {
  9. log.Fatal(err)
  10. }

func TempFile

  1. func TempFile(dir, prefix string) (f *os.File, err error)

TempFile 函数在 dir 中创建前缀为 prefix 的临时文件,并打开该文件进行读写,返回 *os.File。如果 dir 为空,将使用默认的文件夹(详情请看 os.TempDir)。多个程序调用 TempFile 函数不会使用同一个文件。用户可以使用 f.Name() 来获取文件路径。当用户不再需要该文件时需要手动删除。


例:

  1. content := []byte("temporary file's content")
  2. tmpfile, err := ioutil.TempFile("", "example")
  3. if err != nil {
  4. log.Fatal(err)
  5. }
  6. defer os.Remove(tmpfile.Name()) // clean up
  7. if _, err := tmpfile.Write(content); err != nil {
  8. log.Fatal(err)
  9. }
  10. if err := tmpfile.Close(); err != nil {
  11. log.Fatal(err)
  12. }

func WriteFile

  1. func WriteFile(filename string, data []byte, perm os.FileMode) error

WriteFile 将数据写进文件 filename 中。该文件不存在时 WriteFile 会创建这个文件(需要有相应权限),如果文件已经存在 WriteFile 将会在写入之前覆盖它。