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. 它以纯文本存储数和文本.文件的每一行就代表一条数据,每条记录包含了由逗号分隔 ...
随机推荐
- 史上最详细配置HTTPS
HTTP(超文本传输协议),是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准.设计HTTP的初衷是为 ...
- transaction事务案例--银行转账
1)dao层 package cn.spring.transaction.dao; public interface MoneyDao { //加钱的方法 void addMoney(double m ...
- Wireshark 抓取USB的数据包
需要使用root权限来运行Wireshark,并利用Wireshark来嗅探USB通信数据.当然了,我们并不建议大家利用root权限来进行操作.我们可以使用Linux提供的usbmon来为我们获取和导 ...
- Android常用adb命令总结(二)
adb shell 命令 简单点讲,adb 命令是 adb 这个程序自带的一些命令,而 adb shell 则是调用的 Android 系统中的命令,这些 Android 特有的命令都放在了 Andr ...
- MySQL数字类型学习笔记
数字类型 最近在看<MySQL技术内幕:SQL编程>并做了笔记,所以本博客是一篇笔记类型博客,分享出来方便自己复习,也可以帮助他人 整型 类型 占用空间 最小值(SIGNED) 最大值(S ...
- RST Methodology: “Responsible Tester”
翻译另一篇James Bach的关于快速软件测试的文章,原文链接:http://www.satisfice.com/blog/archives/1364 在快速软件测试方法论中,我们区分出三种主要角色 ...
- jenkins支持git分支发布
https://blog.csdn.net/wc1695040842/article/details/102228804 核心就是需要安装一个Git Parameter 的插件结合使用. 如果同时有多 ...
- efcore adddbcontext
public static IServiceCollection AddDbContext<TContextService, TContextImplementation>( [NotNu ...
- Spring Boot 2.X整合Spring-cache,让你的网站速度飞起来
计算机领域有人说过一句名言:“计算机科学领域的任何问题都可以通过增加一个中间层来解决”,今天我们就用Spring-cache给网站添加一层缓存,让你的网站速度飞起来. 本文目录 一.Spring Ca ...
- WPF图片,DataGrid等实现圆角
<Grid HorizontalAlignment="Center" VerticalAlignment="Center"> <Grid.Ro ...