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("床前明月光,\r\n疑是地上霜。\r\n举头望明月,\r\n低头思故乡。")
}

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盘下所有目录的名字
}
}

 

8.Go-Reader,Writer和ioutil的更多相关文章

  1. RFID 读写器 Reader Writer Cloner

    RFID读写器的工作原理 RFID的数据采集以读写器为主导,RFID读写器是一种通过无线通信,实现对标签识别和内存数据的读出和写入操作的装置. 读写器又称为阅读器或读头(Reader).查询器(Int ...

  2. Stream,Reader/Writer,Buffered的区别(1)

    Stream: 是字节流形式,exe文件,图片,视频等.支持8位的字符,用于 ASCII 字符和二进制数据. Reader/Writer: 是字符流,文本文件,XML,txt等,用于16位字符,也就是 ...

  3. RFIDler - An open source Software Defined RFID Reader/Writer/Emulator

    https://www.kickstarter.com/projects/1708444109/rfidler-a-software-defined-rfid-reader-writer-emul h ...

  4. RubyMine生成reader/writer方法

    RubyMine生成reader/writer方法 在非类的ruby文件中,Alt+Insert会出现新建文件的选项: 在ruby文件的类中,Alt+Insert会出现get/set方法生成提示和重构 ...

  5. multithreading - Reader/Writer Locks in C++

    You Only Need To Note This: only 1 single thread can acquire an upgrade_lock at one time. others are ...

  6. Stream,Reader/Writer,Buffered的区别(2)

    Reader: Reader的子类: 1.BufferedReader: FileReader 没有提供读取文本行的功能,BufferedReader能够指定缓冲区大小,包装了read方法高效读取字符 ...

  7. ExtJS4.2学习(7)——基础知识之Reader&Writer篇

    Reader: 主要用于将proxy数据代理读取的数据按照不同的规则进行解析,将解析好的数据保存到Modle中. 结构图 Ext.data.reader.Reader 读取器的根类(很少直接实例化这个 ...

  8. 02_IO操作的基本规律(InputStream,OutputStream,Reader,Writer,FileReader,FileWriter,BufferedReader,BufferedWri

     模拟BufferedInputStream,编写一个类 package toto.IO; import java.io.IOException; import java.io.InputStre ...

  9. Python CSV Reader/Writer 例子--转载

    CSV(comma-separated values) 是跨多种形式导入导出数据的标准格式,比如 MySQL.Excel. 它以纯文本存储数和文本.文件的每一行就代表一条数据,每条记录包含了由逗号分隔 ...

随机推荐

  1. HDU2899Strange fuction(二分/三分)

    传送门 题目大意:求 F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100):的最小值 题解:求个导,二分导函数零点,就是原函数最小值所在的 ...

  2. vscode常用快捷键与插件推荐

    一.vscode常用快捷键 1.新建文件:chtr+n 2.新开窗口:ctrl+shift+n 3.分屏:ctrl+1/2/3  4.切换文件:alt+1/2/3或ctrl+tab 5.关闭当前窗口: ...

  3. 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 2

    18.2  PDO所支持的数据库 使用PHP可以处理各种数据库系统,包括MySQL.PostgreSQL.Oracle.MsSQL等.但访问不同的数据库系统时,其所使用的PHP扩展函数也是不同的.例如 ...

  4. 解决 layui 弹出层(弹框)一闪而过就消失的问题 (转载)

    转载: 原文链接:https://blog.csdn.net/qq_20594019/article/details/83956532 本人遇到问题:使用layer.open()弹出页面层,出现弹框闪 ...

  5. java 接口中的成员变量与方法

    java接口中变量的默认修饰符为 public static final int i = 3; 相当于 public static final int i = 3; java接口中方法的默认修饰符为 ...

  6. cl_demo_output=>display 介绍

    Methods of CL_DEMO_OUTPUT PS:自己测试是display后的内表不能带表头. 类CL_DEMO_OUTPUT 在示例程序中创造了很多简单的数据输出的方法而不需要经典的list ...

  7. centos 7 搭建Samba

    一.Samba简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,由客户端和服务端构成. SMB(Server Message Block的缩写,即服务器消息块)主要是作 ...

  8. Python--方法/技巧在哪用的典型例子

    就我个人在学习Python的过程中,经常会出现学习了新方法后,如果隔上几天不用,就忘了的情况,或者刚学习的更好的方法没有得到应用,还是沿用已有的方法,这样很不利于学习和掌握新姿势,从而拉长学习时间,增 ...

  9. 虚拟机Centos6.7安装VMTools

    安装VMware Tools,设置共享文件夹 一.基本步骤 1.VMware Workstation菜单栏中,选择“虚拟机”,”安装VMware Tools...“.(注:此时下方可能会弹出“确保您已 ...

  10. C学习笔记(2)---各类函数

    1.函数(function)声明定义: 见例子,不复述:https://www.runoob.com/cprogramming/c-functions.html 2. 函数参数(Parameters“ ...