1.介绍
在Go
语言中,io
包主要声明的是对I/O
操作的基本接口,而io/ioutil
包则实现了对应的方法,方便我们直接使用。
2.方法列表
方法名 |
描述 |
NopCloser |
对Reader 进行封装,返回一个ReadCloser |
ReadAll |
对 Reader 进行读取, 直到发生错误或者遇到 EOF 为止, 然后返回被读取的数据。 |
ReadFile |
读取指定文件的内容,并返回。 |
ReadDir |
读取 指定的目录, 并返回排序后的目录列表(根据名称排序) |
TempDir |
在指定目录新创建一个临时目录, 并返回该目录的路径 |
TempFile |
在指定目录新创建一个临时文件, 以可读写的方式打开它, 并返回 *os.File 指针 |
WriteFile |
将给定的数据 写入到指定文件里面。 如果文件不存在, 则去创建它; 如果文件已经存在, 则再写入之前会先清空文件中已有的内容。 |
3.ReadAll
3.1 方法签名
func ReadAll(r io.Reader) ([]byte, error)
|
ReadAll
从r
读取数据直到EOF
或error
,返回读取内容([]byte
)和错误(error
)。读取成功时err返回nil
。因为本函数定义为读取r
直到EOF
,它不会将读取返回的EOF
视为应报告的错误。
3.2 使用
func main() { reader := strings.NewReader("Hello word !") all, err := ioutil.ReadAll(reader) if err != nil { fmt.Println(err) return } fmt.Printf("%s",all) }
|
4.ReadFile
4.1 方法签名
func ReadFile(filename string) ([]byte, error)
|
ReadFile
从filename
指定的文件中读取内容并返回。读取成功时err返回nil
。因为本函数定义为读取r
直到EOF
,它不会将读取返回的EOF
视为应报告的错误。
4.2 使用
func main() { fileName := "./test.log" data, err := ioutil.ReadFile(fileName) if err != nil { fmt.Println(err) return } fmt.Printf("%s",data) }
|
5.ReadDir
5.1 方法签名
func ReadDir(dirname string) ([]os.FileInfo, error)
|
返回dirname
指定的目录的目录信息的有序列表。
5.2 使用
func main() { dirName := "./log" dirList, err := ioutil.ReadDir(dirName) if err != nil { fmt.Println(err) return } for _, info := range dirList { fmt.Println(info.Name()) } }
|
6.TempDir
6.1 方法签名
func TempDir(dir, pattern string) (name string, err error)
|
在dir
目录里创建一个新的、使用pattern
作为前缀的临时文件夹,并返回文件夹的路径。
- 如果
dir
是空字符串,TempDir
使用默认用于临时文件的目录。
- 不同程序同时调用该函数会创建不同的临时目录,
- 创建的临时文件夹时在不使用时,需要删除。
6.2 使用
func main() { var pathList []string for i := 0; i < 4; i++ { var path string var err error switch i { case 0: path, err = ioutil.TempDir("./log","tmp_") case 1: path, err = ioutil.TempDir("./log","") case 2: path, err = ioutil.TempDir("","tmp_") case 3: path, err = ioutil.TempDir("","") } if err != nil { fmt.Println(err) continue } pathList = append(pathList, path) } fmt.Println(pathList) }
|
7.TempFile
7.1 方法签名
func TempFile(dir, pattern string) (f *os.File, err error)
|
在dir
目录下创建一个新的、使用pattern
为前缀的临时文件,以读写模式打开该文件并返回os.File
指针。
- 如果
dir
是空字符串,TempFile
使用默认用于临时文件的目录。
- 不同程序同时调用该函数会创建不同的临时文件。
- 创建的临时文件夹时在不使用时,需要删除。
7.2 使用
func main() { var fileList []string for i := 0; i < 4; i++ { var file *os.File var err error switch i { case 0: file, err = ioutil.TempFile("./log", "tmp_") case 1: file, err = ioutil.TempFile("./log", "") case 2: file, err = ioutil.TempFile("", "tmp_") case 3: file, err = ioutil.TempFile("", "") } if err != nil { fmt.Println(err) continue } fileList = append(fileList, file.Name()) } fmt.Println(fileList) }
|
8.WriteFile
8.1 方法签名
func WriteFile(filename string, data []byte, perm os.FileMode) error
|
函数向filename
指定的文件中写入数据。
- 如果文件不存在,将按给出的权限创建文件,
- 如果文件存在,在写入数据之前清空文件。
8.2 使用
func main() { fileName := "./test.txt" for i := 0; i < 3; i++ { _ = ioutil.WriteFile(fileName, []byte("Hello Word!"), os.ModePerm) } fmt.Println("end") }
|