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. 它以纯文本存储数和文本.文件的每一行就代表一条数据,每条记录包含了由逗号分隔 ...
随机推荐
- luoguP3649 [APIO2014]回文串
题意 关于回文自动机的讲解见这里 由于回文串个数是\(O(n)\)的,直接回文自动机上统计并比较即可. code: #include<bits/stdc++.h> using namesp ...
- AtCoder Grand Contest 040
Preface 今年准备省选啥都不说了,省选题基本上都做过一遍了,开始尝试板刷AGC 这场做完就从AGC001开始吧,感觉以我的速度和来机房的频率一个礼拜做一场都谢天谢地了 A - >< ...
- Codechef November Challenge 2019 Division 1
Preface 这场CC好难的说,后面的都不会做QAQ 还因为不会三进制位运算卷积被曲明姐姐欺负了,我真是太菜了QAQ PS:最后还是狗上了六星的说,期待两(三)场之内可以上七星 Physical E ...
- navicat连接mysql报错1251解决方案,从头搭建node + mysql 8.0 (本人亲测有效)
准备学node 好久了 一直没有动手去写,今天突发奇想,然后就安装了一个mysql (找了一个博客跟着步骤去安装的),然后打算用node 写个增删改查. 1.下载mysql安装包 地址: http ...
- .NET 时间轴:从出生到巨人
自1995年互联网战略日以来最雄心勃勃的事业 —— 微软.NET战略, 2000年6月30日. 微软于2000年推出基于Windows操作系统的应用软件开发框架.NET,发展至今形成巨大的技术栈,涉及 ...
- css 修改placeholder字体颜色字体大小 修改input记住账号密码后的默认背景色
壹 ❀ 引 本来这个阶段的项目页面都是给实习生妹子做的,我只用写写功能接接数据,但这两天妹子要忙翻译,这个工作阶段也快结束了导致有点慌,只能自己把剩余的几个小页面给写了. 那么做页面的过程中,UI也 ...
- 【转】Ubuntu 16 安装 python 依赖出现 error: command 'i686-linux-gnu-gcc' failed with exit status 1
问题 在 Ubuntu 下安装 python 依赖的时候出现以下错误 build/temp.linux-i686-3.5/_openssl.c:498:30: fatal error: openssl ...
- 详解JAVA8函数式接口{全}
1: 函数式接口 1.1 概念 1.2 格式 1.3@FunctionalInterface注解 1.4 调用自定义函数接口 2:函数式编程 2.1:lambda的延迟执行 2.2 使用Lambda作 ...
- spring-boot-starter-web排除自带的logback依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...
- PI对于两个SAP客户端通道的了解
你把你的报文放到ESR的MM里面试一下就知道了 日期格式之类的,可能有转换的你要输入2019-05-13这种 OA到PI不选,都是到一个系统,由PI再来分流 如果你要做成由OA来选的,就要参考类似于 ...