zoukankan      html  css  js  c++  java
  • 8.Go-Reader,Writer和ioutil

    8.1.Reader

    (1)输入流

    • 流是应用程序和外部资源进行数据交互的纽带
    • 流分为输入流和输出流,输入和输出都是相对于程序,把外部数据传入程序中叫做输入流,反之叫做输出流
    • 在Go语言标准库中io包下是Reader接口表示输入流,只要实现这个接口就属于输入流

    (2)手动创建流

    //Learn_Go/main.go
    package main
    
    import (
    	"fmt"
    	"strings"
    )
    
    func main() {
    	r := strings.NewReader("hello world")
    	b := make([]byte,r.Size())
    	n,err := r.Read(b)
    	if err != nil{
    		fmt.Println("读取流数据失败",err)
    		return
    	}
    	fmt.Println("读取的数据长度为:",n)       //读取的数据长度为: 11
    	fmt.Println("数据内容为:",string(b))     //数据内容为: hello world
    }
    

    (3)读取文件内容

    //Learn_Go/main.go
    package main
    
    import (
    	"fmt"
    	"os"
    )
    
    func main() {
    	f,_ := os.Open("D:/test.txt")
    	fileInfo,_ := f.Stat()
    	b := make([]byte,fileInfo.Size())
    	f.Read(b)
    	fmt.Println(string(b))
    }
    
    //结果
    床前明月光,
    疑是地上霜。
    举头望明月,
    低头思故乡。
    

    8.2.Writer

    //Learn_Go/main.go
    package main
    
    import "os"
    
    func main() {
    	filePath := "D:/go.txt"
    	f,err := os.OpenFile(filePath,os.O_APPEND,0660)     // 0660  表示权限
    	defer f.Close()
    	if err != nil{
    		f,_ = os.Create(filePath)    //如果文件不存在,就新建一个文件
    	}
    	//f.Write([]byte("你好,世界"))
    	f.WriteString("床前明月光,
    疑是地上霜。
    举头望明月,
    低头思故乡。")
    }
    

    8.3.ioutil  

     ioutil包下提供了对文件读写的工具函数,通过这些函数快速实现文件的读写操作

    (1)打开文件后使用ReadAll把文件内容读出来

    //Learn_Go/main.go
    package main
    
    import (
    "fmt"
    "io/ioutil"
    "os"
    )
    
    func main() {
    	f,err := os.Open("D:/go.txt")
    	defer f.Close()
    	if err != nil{
    		fmt.Println(err)
    		return
    	}
    	b,err := ioutil.ReadAll(f)
    	if err != nil{
    		fmt.Println(err)
    		return
    	}
    	fmt.Println(string(b))
    } 

     (2)可以直接读取文件中内容 

    //Learn_Go/main.go
    package main
    
    import (
    	"fmt"
    	"io/ioutil"
    )
    
    func main() {
    	b,err := ioutil.ReadFile("D:/go.txt")
    	if err != nil{
    		fmt.Println(err)
    		return
    	}
    	fmt.Println(string(b))
    }
    

    (3)写数据

    //Learn_Go/main.go
    package main
    
    import "io/ioutil"
    
    func main() {
    	//每次清空再写,而不是追加
    	ioutil.WriteFile("D:/go.txt",[]byte("你好,世界"),0666)
    }
    

    (4)读取所有目录

    //Learn_Go/main.go
    package main
    
    import (
    	"fmt"
    	"io/ioutil"
    )
    
    func main() {
    	fi,_ := ioutil.ReadDir("D:/")
    	for _,n := range fi{
    		fmt.Println(n.Name())     //D盘下所有目录的名字
    	}
    }
    

     

  • 相关阅读:
    android cts 命令的说明
    k8s认证授权和dashboard部署
    Pod对象的基本概念
    k8s创建自定义资源
    flannel网络插件介绍
    go语言包的介绍
    安装k8s的自动代码生成器
    k8s的pv和pvc概念
    Es索引匹配查询
    shell实现自动化部署项目
  • 原文地址:https://www.cnblogs.com/derek1184405959/p/11332093.html
Copyright © 2011-2022 走看看