Go 学习笔记(49)— Go 标准库之 io/ioutil(读写文件、获取目录下的文件和子目录、创建临时目录和文件)
1. 简要概述
import "io/ioutil"
包 io/ioutil
实现一些 I/O
实用程序函数。
2. 相关函数
2.1 func ReadAll
func ReadAll(r io.Reader) ([]byte, error)
ReadAll
从 r
读取数据直到 EOF
或遇到 error
,返回读取的数据和遇到的错误。成功的调用返回的 err
为 nil
而非 EOF
。因为本函数定义为读取 r
直到 EOF
,它不会将读取返回的 EOF
视为应报告的错误。
2.2 func ReadFile
func ReadFile(filename string) ([]byte, error)
ReadFile
从 filename
指定的文件中读取数据并返回文件的内容。成功的调用返回的 err
为 nil
而非 EOF
。因为本函数定义为读取整个文件,它不会将读取返回的 EOF
视为应报告的错误。
2.3 func WriteFile
func WriteFile(filename string, data []byte, perm os.FileMode) error
函数向 filename
指定的文件中写入数据。如果文件不存在将按给出的权限创建文件,否则在写入数据之前清空文件。
在 UNIX
型系统中, 文件的默认权限为 0644
,即所有者能够读取和写入,而其他人只能读取。
2.4 func ReadDir
func ReadDir(dirname string) ([]os.FileInfo, error)
返回 dirname
指定的目录的目录信息的有序列表。包含如下信息。
Name
:文件的名称。Size
:文件的长度, 单位为宇节。Mode
: 用二进制位表示的权限。ModTime
:文件最后一个被修改的时间。IsDir
:文件是否是目录。Sys
:底层数据源。
2.5 func TempDir
func TempDir(dir, prefix string) (name string, err error)
在 dir
目录里创建一个新的、使用 prfix
作为前缀的临时文件夹,并返回文件夹的路径。如果 dir
是空字符串, TempDir
使用默认用于临时文件的目录(参见 os.TempDir
函数)。 不同程序同时调用该函数会创建不同的临时目录,调用本函数的程序有责任在不需要临时文件夹时摧毁它。
2.6 func TempFile
func TempFile(dir, prefix string) (f *os.File, err error)
在 dir
目录下创建一个新的、使用 prefix
为前缀的临时文件,以读写模式打开该文件并返回 os.File
指针。如果 dir
是空字符串, TempFile
使用默认用于临时文件的目录(参见 os.TempDir
函数)。不同程序同时调用该函数会创建不同的临时文件,调用本函数的程序有责任在不需要临时文件时摧毁它。
2.7 复制文件
ioutil
包可用于执行一些常见的文件处理操作,但要执行更复杂的操作,应使用 os
包。os
包运行在稍低的层级,因此使用它时,必须手工关闭打开的文件。如果您阅读 os
包的源代码,将发现 ioutil
包中的很多函数都是 os
包包装器,您无须显式地关闭文件。
func main() {src, err := os.Open("./example05.txt")if err != nil {fmt.Println(err)}defer src.Close()/*使用函数 OpenFile 打开文件。第一个参数是要打开(如果不存在, 就创建)的文件的名称; 第二个参数是用于文件的标志,在这里指定的是读写文件, 并在文件不存在时创建它; 最后一个参数设置文件的权限。*/dst, err := os.OpenFile("./example OS.copy.txt ", os.O_RDWR|os.O_CREATE, 0644)if err != nil {fmt.Println(err)}defer dst.Close()_, err = io.Copy(dst, src)if err != nil {fmt.Println(err)}
}
3. 代码示例
package mainimport ("fmt""io/ioutil""os""strings"
)func main() {r := strings.NewReader("hello world")// ReadAll 读取 io.Reader 对象的所有数据,返回读取内容和错误allContents, err := ioutil.ReadAll(r)if err != nil {fmt.Println("ReadAll failed")}fmt.Printf("allContents is %#v\n", string(allContents))// ReadFile 读取文件内容 ,返回读取内容和错误testFile := "/home/wohu/GoCode/src/task/test.txt"txtContent, err := ioutil.ReadFile(testFile)if err != nil {fmt.Println("ReadFile failed")}fmt.Printf("txtContent is %#v\n", string(txtContent))// WriteFile 读取文本文件内容,返回错误err = ioutil.WriteFile(testFile, []byte("大漠孤烟直"), 0755)if err != nil {fmt.Println("WriteFile failed")}// ReadDir 读取某个目录下所有的文件或者目录列表fileInfos, err := ioutil.ReadDir("./src/task")if err != nil {fmt.Println("ReadDir failed")}fmt.Printf("ReadDir is %#v\n", fileInfos)for _, fd := range fileInfos {fmt.Printf("file or dir is %#v, it's dir: %#v\n", fd.Name(), fd.IsDir())}// TempDir 创建临时目录tempDir, err := ioutil.TempDir("./src/task/", "temp")if err != nil {fmt.Println("TempDir failed")}fmt.Printf("tempDir is %#v\n", tempDir)// TempFile 创建临时目录tempFile, err := ioutil.TempFile("./src/task/", "temp")if err != nil {fmt.Println("TempDir failed")}tempFileName := tempFile.Name()fmt.Printf("tempFile is %#v\n", tempFile)fmt.Printf("tempFileName is %#v\n", tempFileName)defer os.RemoveAll(tempDir) // 删除创建的临时目录defer os.RemoveAll(tempFileName) // 删除创建的临时文件
}
Go 学习笔记(49)— Go 标准库之 io/ioutil(读写文件、获取目录下的文件和子目录、创建临时目录和文件)相关推荐
- python基础教程_学习笔记14:标准库:一些最爱——re
标准库:一些最爱 re re模块包括对正則表達式的支持,由于以前系统学习过正則表達式,所以基础内容略过,直接看python对于正則表達式的支持. 正則表達式的学习,见<Mastering Reg ...
- python基础课程_学习笔记13:标准库:有些收藏夹——sys
标准库:有些收藏夹 sys sys这个模块可以让你访问和python解释器联系紧密的变量和函数. sys模块中一些重要的函数和变量 函数/变量 描写叙述 argv 命令行參数,包含脚本名称 exit( ...
- Python学习笔记: Python 标准库概览二
本文来自:入门指南 开胃菜参考:开胃菜 使用Python解释器:使用Python解释器 本文对Python的简介:Python 简介 Python流程介绍:深入Python 流程 Python数据结构 ...
- Python学习笔记: Python 标准库概览
本文来自:入门指南 开胃菜参考:开胃菜 使用Python解释器:使用Python解释器 本文对Python的简介:Python 简介 Python流程介绍:深入Python 流程 Python数据结构 ...
- Python学习笔记17:标准库之数学相关(math包,random包)
前面几节看得真心累.如今先来点简单easy理解的内容. 一 math包 math包主要处理数学相关的运算. 常数 math.e # 自然常数e math.pi # 圆周率pi 运算函数 math ...
- Python学习笔记14:标准库之信号量(signal包)
signal包负责在Python程序内部处理信号.典型的操作包含预设信号处理函数,暂停并等待信号,以及定时发出SIGALRM等. 要注意,signal包主要是针对UNIX平台(比方Linux, MAC ...
- 学习笔记四.基于HAL库的stm32f103硬件读写EEPROM(CUBEMX)
基于cubemx的stm32f103硬件读写EEPROM 今天介绍一种可擦除存储器. EEPROM (Electrically Erasable Programmable read only memo ...
- Javaweb学习笔记(JSP标准标签库)
Javaweb学习笔记(JSP标准标签库) JSTL入门 安装和测试JSTL JSTL中的Core标签库 < c:out>标签 标签 标签 < c:catch>标签 标签 标签 ...
- C++prime读书笔记(二)C++标准库:IO、容器、泛型算法、动态内存
layout: post title: C++prime读书笔记(二)C++标准库:IO.容器.泛型算法.动态内存 description: C++prime读书笔记(二)C++标准库:IO.容器.泛 ...
最新文章
- Opencv2.4.4示例程序说明
- 猪行天下之Python基础——7.1 文件存储
- Android创建自己的gradle依赖包
- 028_vue路由嵌套
- hdu 4983(欧拉函数)
- tomcat如何将请求分发到servlet
- Web- HTML网页颜色大全
- 图解算法学习笔记(二): 选择排序
- cognos报表导出excel_有了这个报表工具,一键生成自定义的各种报表,还可以导出Excel...
- 通过xmlhttp实现-报告归档
- 写“博客”页面踩过的坑
- 2021最新 武汉互联网公司
- Gallery 简易图片浏览
- 海瑟矩阵和函数凹凸性之间的关系
- Tableau实战 公司投资分析
- python的mapl画图y轴排_在matplotlib中绘制多个y轴和颜色栏
- 经典智力题:飞机加油问题
- 【网络推广】论坛发贴推广技巧
- Java中“/”的使用
- 使用Matlab实现AHP算法