加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 18:43:11 所属栏目:大数据 来源:网络整理
导读: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) 不难

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))
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:testtmp846626247 就是前边的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))
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!