1. 简要概述

import "io/ioutil"

io/ioutil 实现一些 I/O 实用程序函数。

2. 相关函数

2.1 func ReadAll

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

ReadAllr 读取数据直到 EOF 或遇到 error ,返回读取的数据和遇到的错误。成功的调用返回的 errnil 而非 EOF 。因为本函数定义为读取 r 直到 EOF ,它不会将读取返回的 EOF 视为应报告的错误。

2.2 func ReadFile

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

ReadFilefilename 指定的文件中读取数据并返回文件的内容。成功的调用返回的 errnil 而非 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(读写文件、获取目录下的文件和子目录、创建临时目录和文件)相关推荐

  1. python基础教程_学习笔记14:标准库:一些最爱——re

    标准库:一些最爱 re re模块包括对正則表達式的支持,由于以前系统学习过正則表達式,所以基础内容略过,直接看python对于正則表達式的支持. 正則表達式的学习,见<Mastering Reg ...

  2. python基础课程_学习笔记13:标准库:有些收藏夹——sys

    标准库:有些收藏夹 sys sys这个模块可以让你访问和python解释器联系紧密的变量和函数. sys模块中一些重要的函数和变量 函数/变量 描写叙述 argv 命令行參数,包含脚本名称 exit( ...

  3. Python学习笔记: Python 标准库概览二

    本文来自:入门指南 开胃菜参考:开胃菜 使用Python解释器:使用Python解释器 本文对Python的简介:Python 简介 Python流程介绍:深入Python 流程 Python数据结构 ...

  4. Python学习笔记: Python 标准库概览

    本文来自:入门指南 开胃菜参考:开胃菜 使用Python解释器:使用Python解释器 本文对Python的简介:Python 简介 Python流程介绍:深入Python 流程 Python数据结构 ...

  5. Python学习笔记17:标准库之数学相关(math包,random包)

    前面几节看得真心累.如今先来点简单easy理解的内容. 一 math包 math包主要处理数学相关的运算. 常数 math.e   # 自然常数e math.pi  # 圆周率pi 运算函数 math ...

  6. Python学习笔记14:标准库之信号量(signal包)

    signal包负责在Python程序内部处理信号.典型的操作包含预设信号处理函数,暂停并等待信号,以及定时发出SIGALRM等. 要注意,signal包主要是针对UNIX平台(比方Linux, MAC ...

  7. 学习笔记四.基于HAL库的stm32f103硬件读写EEPROM(CUBEMX)

    基于cubemx的stm32f103硬件读写EEPROM 今天介绍一种可擦除存储器. EEPROM (Electrically Erasable Programmable read only memo ...

  8. Javaweb学习笔记(JSP标准标签库)

    Javaweb学习笔记(JSP标准标签库) JSTL入门 安装和测试JSTL JSTL中的Core标签库 < c:out>标签 标签 标签 < c:catch>标签 标签 标签 ...

  9. C++prime读书笔记(二)C++标准库:IO、容器、泛型算法、动态内存

    layout: post title: C++prime读书笔记(二)C++标准库:IO.容器.泛型算法.动态内存 description: C++prime读书笔记(二)C++标准库:IO.容器.泛 ...

最新文章

  1. Opencv2.4.4示例程序说明
  2. 猪行天下之Python基础——7.1 文件存储
  3. Android创建自己的gradle依赖包
  4. 028_vue路由嵌套
  5. hdu 4983(欧拉函数)
  6. tomcat如何将请求分发到servlet
  7. Web- HTML网页颜色大全
  8. 图解算法学习笔记(二): 选择排序
  9. cognos报表导出excel_有了这个报表工具,一键生成自定义的各种报表,还可以导出Excel...
  10. 通过xmlhttp实现-报告归档
  11. 写“博客”页面踩过的坑
  12. 2021最新 武汉互联网公司
  13. Gallery 简易图片浏览
  14. 海瑟矩阵和函数凹凸性之间的关系
  15. Tableau实战 公司投资分析
  16. python的mapl画图y轴排_在matplotlib中绘制多个y轴和颜色栏
  17. 经典智力题:飞机加油问题
  18. 【网络推广】论坛发贴推广技巧
  19. Java中“/”的使用
  20. 使用Matlab实现AHP算法

热门文章

  1. java基本类型转换,随记
  2. 2022-2028年全球与中国人字拖市场研究及前瞻分析报告
  3. windows安装MongoDB环境以及在pycharm中配置可视化插件
  4. 如何kill同一个应用的所有进程
  5. QT 中QTimer 和 startTimer()的区别
  6. LeetCode简单题之只出现一次的数字
  7. Wide Deep的OneFlow网络训练
  8. TensorFlow创建DeepDream网络
  9. TensorRT 数据格式说明
  10. CodeGen CreateFile实用程序