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盘下所有目录的名字
    	}
    }
    
  • 相关阅读:
    1130 Host XXX is not allowed to connect to this MySQL server。
    解决IntelliJ IDEA控制台输出中文乱码问题
    安装VS 201 SP1的时候,停在了“正在安装VS10Sp1KB983509”处
    ubuntu下获得root权限并修改hosts+ubuntu设置windows效果的字体--成功
    K8S官方网站 标题索引(超链接)
    DolphinScheduler2.0执行流程MasterServer
    DolphinScheduler2.0.0源码分析过程(02)
    DolphinScheduler2.0.0源码分析过程(01)
    【2021年终总结】关于我7个月不再更新文章而转行去做产品这件小事
    利用TChart做分离饼形图
  • 原文地址:https://www.cnblogs.com/gaidy/p/11887160.html
Copyright © 2011-2022 走看看