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("床前明月光,\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的更多相关文章
- RFID 读写器 Reader Writer Cloner
RFID读写器的工作原理 RFID的数据采集以读写器为主导,RFID读写器是一种通过无线通信,实现对标签识别和内存数据的读出和写入操作的装置. 读写器又称为阅读器或读头(Reader).查询器(Int ...
- Stream,Reader/Writer,Buffered的区别(1)
Stream: 是字节流形式,exe文件,图片,视频等.支持8位的字符,用于 ASCII 字符和二进制数据. Reader/Writer: 是字符流,文本文件,XML,txt等,用于16位字符,也就是 ...
- 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 ...
- RubyMine生成reader/writer方法
RubyMine生成reader/writer方法 在非类的ruby文件中,Alt+Insert会出现新建文件的选项: 在ruby文件的类中,Alt+Insert会出现get/set方法生成提示和重构 ...
- 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 ...
- Stream,Reader/Writer,Buffered的区别(2)
Reader: Reader的子类: 1.BufferedReader: FileReader 没有提供读取文本行的功能,BufferedReader能够指定缓冲区大小,包装了read方法高效读取字符 ...
- ExtJS4.2学习(7)——基础知识之Reader&Writer篇
Reader: 主要用于将proxy数据代理读取的数据按照不同的规则进行解析,将解析好的数据保存到Modle中. 结构图 Ext.data.reader.Reader 读取器的根类(很少直接实例化这个 ...
- 02_IO操作的基本规律(InputStream,OutputStream,Reader,Writer,FileReader,FileWriter,BufferedReader,BufferedWri
模拟BufferedInputStream,编写一个类 package toto.IO; import java.io.IOException; import java.io.InputStre ...
- Python CSV Reader/Writer 例子--转载
CSV(comma-separated values) 是跨多种形式导入导出数据的标准格式,比如 MySQL.Excel. 它以纯文本存储数和文本.文件的每一行就代表一条数据,每条记录包含了由逗号分隔 ...
随机推荐
- HDU2899Strange fuction(二分/三分)
传送门 题目大意:求 F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100):的最小值 题解:求个导,二分导函数零点,就是原函数最小值所在的 ...
- vscode常用快捷键与插件推荐
一.vscode常用快捷键 1.新建文件:chtr+n 2.新开窗口:ctrl+shift+n 3.分屏:ctrl+1/2/3 4.切换文件:alt+1/2/3或ctrl+tab 5.关闭当前窗口: ...
- 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 2
18.2 PDO所支持的数据库 使用PHP可以处理各种数据库系统,包括MySQL.PostgreSQL.Oracle.MsSQL等.但访问不同的数据库系统时,其所使用的PHP扩展函数也是不同的.例如 ...
- 解决 layui 弹出层(弹框)一闪而过就消失的问题 (转载)
转载: 原文链接:https://blog.csdn.net/qq_20594019/article/details/83956532 本人遇到问题:使用layer.open()弹出页面层,出现弹框闪 ...
- java 接口中的成员变量与方法
java接口中变量的默认修饰符为 public static final int i = 3; 相当于 public static final int i = 3; java接口中方法的默认修饰符为 ...
- cl_demo_output=>display 介绍
Methods of CL_DEMO_OUTPUT PS:自己测试是display后的内表不能带表头. 类CL_DEMO_OUTPUT 在示例程序中创造了很多简单的数据输出的方法而不需要经典的list ...
- centos 7 搭建Samba
一.Samba简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,由客户端和服务端构成. SMB(Server Message Block的缩写,即服务器消息块)主要是作 ...
- Python--方法/技巧在哪用的典型例子
就我个人在学习Python的过程中,经常会出现学习了新方法后,如果隔上几天不用,就忘了的情况,或者刚学习的更好的方法没有得到应用,还是沿用已有的方法,这样很不利于学习和掌握新姿势,从而拉长学习时间,增 ...
- 虚拟机Centos6.7安装VMTools
安装VMware Tools,设置共享文件夹 一.基本步骤 1.VMware Workstation菜单栏中,选择“虚拟机”,”安装VMware Tools...“.(注:此时下方可能会弹出“确保您已 ...
- C学习笔记(2)---各类函数
1.函数(function)声明定义: 见例子,不复述:https://www.runoob.com/cprogramming/c-functions.html 2. 函数参数(Parameters“ ...