golang讲解(go语言)标准库分析之io.ioutil

前端之家收集整理的这篇文章主要介绍了golang讲解(go语言)标准库分析之io.ioutil前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

http://www.widuu.com/archives/12/906.html

Golang标准库


今天我们讲解的是golang标准库里边的io/IoUtil包–也就是 package io/IoUtil
1. IoUtil.ReadDir(dirname string) 这个函数的原型是这样的 func ReadDir(dirname string) ([]os.FileInfo,error)
不难看出输入的是dirname类型是string类型的 譬如”d:/go”,然会是一个FileInfo的切片,其中FileInfo的结构是这样的

1 type FileInfointerface {
2 Name() string// 文件名称
3 Size() int64// 唱过文件的大小
4 Mode() FileMode// 文件的权限
5 ModTime() time.Time// 时间
6 IsDir() bool// 是否是目录
7 Sys()interface{}// 基础数据源接口(can return nil)
8 }

所以说返回的切片可以执行FileInfo的方法,另外一个参数是什么呢?error是否成功返回!这个时候我们就能做一下实验代码是这样的一个demo

01 import"fmt"
02 "io/IoUtil"
03
04 func main() {
05 dir_list,e := IoUtil.ReadDir("d:/test")
06 if e != nil {
07 fmt.Println("read dir error"08 return
09 }
10 for i,v := range dir_list {
11 fmt.Println(i,"=",v.Name())
12 fmt.Println(v.Name(),255)!important; border:0px!important; margin:0px!important; outline:0px!important; float:none!important; vertical-align:baseline!important; position:static!important; left:auto!important; top:auto!important; right:auto!important; bottom:auto!important; height:auto!important; width:auto!important; line-height:1.1em!important; direction:ltr!important; display:inline!important; background:none!important">"的权限是:"
13 "文件大小:"
14 "创建时间"
15 "系统信息"
16 v.IsDir() == true {
17 "是目录"18
19 20 }
21 2.讲解的是IoUtil.ReadFile(filename string)函数的原型是func ReadFile(filename string) ([]byte,error)
输入的是string类型,返回的是字节型切片和一个err这个很简单我们坐下代码demo

import (
"fmt"
"io/IoUtil"
"os"
func main() {
data,err := IoUtil.ReadFile("D:/test/widua.go")
err != nil {
"read error"os.Exit(1)
fmt.Println(string(data))
3.第三个我们讲解的是IoUtil.ReadAll()函数的原型是func ReadAll(r io.Reader) ([]byte,error)输入的是一个io.Reader元读取器返回的是[]byte字节切片和error

"reflect"
"strings"
reader := strings.NewReader("hello word widuu")//返回*strings.Reader
fmt.Println(reflect.TypeOf(reader))
IoUtil.ReadAll(reader)
fmt.Println(string(data))
4.第四个是IoUtil.NopCloser()函数原型是 func NopCloser(r io.Reader) io.ReadCloser 还是一个Reader 然后返回的是ReadCloser接口,提供的是Close方法,上边方法完善后的demo

r := IoUtil.NopCloser(reader)
defer r.Close()
5.第五个是常见临时目录IoUtil.TempDir()函数原型是func TempDir(dir,prefix string) (name string,err error)输入目录名称,前缀,返回的name是prefix+随机数字

dir,err := IoUtil.TempDir("D:/test""tmp" err != nil {
"常见临时目录失败"fmt.Println(dir)//返回的是D:\test\tmp846626247 就是前边的prefix+随机
6.最后一个既然能创建目录就能创建文件IoUtil.TempFile()函数原型是func TempFile(dir,prefix string) (f *os.File,err error)输入目录名称,前缀,返回的是文件的指针和error

file,error := IoUtil.TempFile(defer file.Close()
error != nil {
"创建文件失败"return
file.WriteString("Hello word"//利用file指针的WriteString()详情见os.WriteString()
filedata,_ := IoUtil.ReadFile(file.Name())
fmt.Println(string(filedata))
}
原文链接:https://www.f2er.com/go/190418.html

猜你在找的Go相关文章