详解Go语言中io/ioutil工具的使用

 更新时间:2022年05月26日 11:31:48   作者:剑客阿良_ALiang  
这篇文章主要为大家详细介绍了Go语言中io/ioutil工具的使用,从而简化文件操作。文中是示例代码讲解详细,感兴趣的小伙伴可以了解一下

学习笔记,写到哪是哪。

接着上一篇,我们看看io/ioutil工具如何使用,简化文件操作。

读取文件

读取文件可以使用ReadAll方法或者ReadFile方法。

ReadAll方法样例代码如下

//读取文件ReadAll
func IoUtilRead1() {
    _file, _e := os.Open("./test.txt")
    if _e != nil {
        fmt.Println(_e)
        return
    }
    defer _file.Close()
    _text, _err := ioutil.ReadAll(_file)
    fmt.Println(_err)
    fmt.Println(string(_text))
}

文件内容和执行结果如下

<nil>
今天天气真好

Process finished with the exit code 0 

ReadFile方法样例代码如下

//读取文件ReadFile
func IoUtilRead2() {
    _text, _err := ioutil.ReadFile("./test.txt")
    fmt.Println(_err)
    fmt.Println(string(_text))
}

执行结果如下

<nil>
今天天气真好

Process finished with the exit code 0

写文件

可以使用ioutil.WriteFile方法写文件。

样例代码如下

//写文件
func IoUtilWriteFile() {
    _err := ioutil.WriteFile("./test.txt", []byte("今天天气真好"), os.ModePerm)
    fmt.Println(_err)
}

注意方法还是要带入文件权限参数,文件如果不存在的话,会自动创建。但是不能追加文本内容,还是要注意一下。

读取文件夹下所有文件信息

可以使用ioutil.ReadDir方法读取目录下所有文件信息。

样例代码如下

//读取文件夹下的文件
func IoUtilReadDir() {
    fileInfoData, _err := ioutil.ReadDir(".")
    if _err != nil {
        fmt.Println(_err)
        return
    }
    for k, v := range fileInfoData {
        fmt.Printf("第%d个文件,名称%s,目录与否:%v\n", k, v.Name(), v.IsDir())
    }
}

输出文件编号、名称、是否为目录,执行结果截图如下

创建临时文件和临时文件夹

可以使用ioutil.TempFile和ioutil.TempDir来创建临时文件和临时文件夹。

样例代码如下

//创建临时文件和文件夹
func IoUtilTemp() {
    _file, _err := ioutil.TempFile(".", "test1.txt")
    if _err != nil {
        fmt.Println(_err)
        return
    }
    defer _file.Close()
    _n, _err1 := _file.WriteString("你是谁")
    if _err1 != nil {
        fmt.Println(_err1)
        return
    }
    fmt.Printf("字符:%d", _n)
    _dirName, _err2 := ioutil.TempDir(".", "output2")
    if _err2 != nil {
        fmt.Println(_err2)
        return
    }
    fmt.Printf("临时文件夹:%v\n", _dirName)
}

执行结果如下截图所示

临时文件和临时文件夹后面会带一串随机字符串。

拷贝文件

使用ioutil写了一个拷贝方法。

样例代码如下

//拷贝文件
func IoUtilCopyFile(srcFile, distFile string) (int, error) {
    _data, _err := ioutil.ReadFile(srcFile)
    if _err != nil {
        return 0, _err
    }
    _err = ioutil.WriteFile(distFile, _data, os.ModePerm)
    if _err != nil {
        return 0, _err
    }
    return len(_data), nil
}
 
func main() {
    IoUtilCopyFile("test.txt", "test1.txt")
}

执行结果如下

小结

总的来说,使用起来简单了不少,里面有使用到string与[]byte的转换,记录一下别忘了。

//string和[]byte之间的转换
func transforStringAndByte() {
    var str string = "今天天气真好"
    data := []byte(str)
    fmt.Println(len(data))
    str1 := string(data[:])
    fmt.Println(str1)
}

以上就是详解Go语言中io/ioutil工具的使用的详细内容,更多关于Go语言io/ioutil工具的资料请关注脚本之家其它相关文章!

相关文章

  • 如何在Go中使用切片容量和长度

    如何在Go中使用切片容量和长度

    这篇文章主要介绍了如何在Go中使用切片容量和长度,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • go 熔断原理分析与源码解读

    go 熔断原理分析与源码解读

    这篇文章主要为大家介绍了go 熔断原理分析与源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Go语言学习技巧之如何合理使用Pool

    Go语言学习技巧之如何合理使用Pool

    这篇文章主要给大家介绍了关于Go语言学习技巧之如何合理使用Pool的相关资料,Pool用于存储那些被分配了但是没有被使用,而未来可能会使用的值,以减小垃圾回收的压力。文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2017-12-12
  • Go语言编程中对文件读写的基本方法整理

    Go语言编程中对文件读写的基本方法整理

    这篇文章主要介绍了Go语言编程中对文件读写的基本方法整理,是Go语言入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10
  • Go http client 连接池不复用的问题

    Go http client 连接池不复用的问题

    这篇文章主要介绍了Go http client 连接池不复用的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • golang操作mongodb的方法

    golang操作mongodb的方法

    这篇文章主要介绍了golang操作mongodb的方法,涉及Go语言操作mongodb的连接、读取及显示的方法,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • Go语言编译原理之源码调试

    Go语言编译原理之源码调试

    这篇文章主要为大家介绍了Go语言编译原理之源码调试示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Go语言使用templ实现编写HTML用户界面

    Go语言使用templ实现编写HTML用户界面

    templ是一个在 Go 中编写 HTML 用户界面的语言,使用 templ,我们可以创建可呈现 HTML 片段的组件,下面就跟随小编一起了解一下具体的实现方法吧
    2023-12-12
  • 详解Golang利用反射reflect动态调用方法

    详解Golang利用反射reflect动态调用方法

    这篇文章主要介绍了详解Golang利用反射reflect动态调用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Golang中的new()和make()函数本质区别

    Golang中的new()和make()函数本质区别

    在 Go 语言开发中,new() 和 make() 是两个容易让开发者感到困惑的内建函数,尽管它们都用于内存分配,但其设计目的、适用场景和底层实现存在本质差异,本文将通过类型系统、内存模型和编译器实现三个维度,深入解析这两个函数的本质区别,感兴趣的朋友一起看看吧
    2025-02-02

最新评论