go语言的魔幻旅程24-ioutil包

千里送鹅毛,礼轻情意重

社会越发展,人与人之间的隔阂在不断的增多,或许在过数十年,人们也许会怀念曾经那个物质匮乏但人心淳朴的纯真年代,在那些日子中,人与人之间多的是温情,少的是彼此之间的狡诈。评价一个人从来不会以挣几个w为衡量的标准,更多的是从人的品行出发,来客观的评价一个人。

go语言的ioutil包

ioutil包在1.16版本之前相关的函数、方法的数量挺多的,后来go的研发团队考虑到将io相关的功能存放在这样的一个包中是偷懒的行为,于是后续的大部分的功能实现拆分到了io包和os包中。下面将针对该包内的函数和方法展开讲解。

package main

/*********************************************************************/
/**************** golang中io.ioutil包相关API讲解 *********************/
/********************************************************************/


/*
Variables
func NopCloser(r io.Reader) io.ReadCloser
func ReadAll(r io.Reader) ([]byte, error)
func ReadDir(dirname string) ([]fs.FileInfo, error)
func ReadFile(filename string) ([]byte, error)
func TempDir(dir, pattern string) (name string, err error)
func TempFile(dir, pattern string) (f *os.File, err error)
func WriteFile(filename string, data []byte, perm fs.FileMode) error
*/


func main() {

	/**
	*NopCloser 返回一个包裹起给定Reader r的 ReadCloser , 这个 ReadCloser 带有一个无参数的 Close 方法。
	*func NopCloser(r io.Reader) io.ReadCloser
	*/

	/*
	r := strings.NewReader("hello world!")
	rr := ioutil.NopCloser(r)
	fmt.Println(rr)
	*/

	/**
	*对 r 进行读取, 直到发生错误或者遇到 EOF 为止,然后返回被读取的数据。一次成功的读取将返回 nil 而不是 EOF作为err的值:
	*这是因为 ReadAll 的定义就是要读取 r 直到遇到 EOF 为止, 所以它不会把读取到的 EOF 当做错误, 也不会向调用者返回它。
	*func ReadAll(r io.Reader) ([]byte, error)
	*/

	/*
	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)
	*/

	/**
	*读取dirname指定的目录, 并返回一个根据文件名进行排序的目录节点列表。
	*func ReadDir(dirname string) ([]fs.FileInfo, error)
	*/

	/*
	files, err := ioutil.ReadDir(".")
	if err != nil {
		log.Fatal(err)
	}
	for _, file := range files {
		fmt.Println(file.Name())
	}
	*/

	/**
	*读取名字为filename的文件并返回文件中的内容。一次成功的读取将返回nil而不是EOF作为err的值:
	*这是因为ReadFile的定义就是要读取整个文件, 所以它不会把读取到的EOF当做错误,也不会向调用者返回它。
	*func ReadFile(filename string) ([]byte, error)
	*/

	/*
	content, err := ioutil.ReadFile("sdk/test.txt")
	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("File contents: %s", content)
	*/

	/**
	*TempDir在目录dir中创建一个名称以前缀开头的新临时目录并返回新目录的路径。如果dir是空字符串,
	*TempDir使用临时文件的默认目录。同时调用TempDir的多个程序不会选择相同的目录。当不再需要时删
	*除目录是调用者的责任。
	*func TempDir(dir, pattern string) (name string, err error)
	*/

	/*
	dir, err := ioutil.TempDir("", "example")
	if err != nil {
		log.Fatal(err)
	}
	defer os.RemoveAll(dir) // clean up
	fmt.Println(dir)
	*/

	/**
	*TempFile在目录dir中创建一个名称以前缀开头的新临时文件,打开文件进行读写操作,并返回结果
	*os.File 。如果dir是空字符串,TempFile 使用临时文件的默认目录(请参阅 os.TempDir)。同时调用
	*TempFile的多个程序不会选择相同的文件。调用者可以使用 f.Name() 来查找文件的路径名。
        *主叫方有责任在不再需要时删除文件
	*func TempFile(dir, pattern string) (f *os.File, err error)
	*/

	/*
	tmpfile, err := ioutil.TempFile("", "example")
	if err != nil {
		log.Fatal(err)
	}
	defer os.Remove(tmpfile.Name()) // clean up
	fmt.Println(tmpfile.Name())
	*/

	/**
	*将给定的数据 data 写入到名字为filename的文件里面。如果文件不存在,那么使用给定的权限 perm 去创建它;
	*如果文件已经存在, 那么 WriteFile 在对其进行写入之前会先清空文件中已有的内容。
	*func WriteFile(filename string, data []byte, perm fs.FileMode) error
	*/

	/*
	message := []byte("Hello, Gophers!")
	err := ioutil.WriteFile("hello", message, 0644)
	if err != nil {
		log.Fatal(err)
	}
	*/
}

小结

ioutil包部分的内容相对比较少,其中部分函数和功能还是需要重点掌握的,反正都已经学了这么久的基础类库了,相信拿下这个包的内容应该不在话下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值