GO系列-ioutil包
ioutil包提供给外部使用的一共有1个变量,7个方法。
// Discard 是一个 io.Writer 接口,调用它的 Write 方法将不做任何事情
// 并且始终成功返回。
var Discard io.Writer = devNull(0)
// ReadAll 读取 r 中的所有数据,返回读取的数据和遇到的错误。
// 如果读取成功,则 err 返回 nil,而不是 EOF,因为 ReadAll 定义为读取
// 所有数据,所以不会把 EOF 当做错误处理。
func ReadAll(r io.Reader) ([]byte, error)
// ReadFile 读取文件中的所有数据,返回读取的数据和遇到的错误。
// 如果读取成功,则 err 返回 nil,而不是 EOF
func ReadFile(filename string) ([]byte, error)
// WriteFile 向文件中写入数据,写入前会清空文件。
// 如果文件不存在,则会以指定的权限创建该文件。
// 返回遇到的错误。
func WriteFile(filename string, data []byte, perm os.FileMode) error
// ReadDir 读取指定目录中的所有目录和文件(不包括子目录)。
// 返回读取到的文件信息列表和遇到的错误,列表是经过排序的。
func ReadDir(dirname string) ([]os.FileInfo, error)
// NopCloser 将 r 包装为一个 ReadCloser 类型,但 Close 方法不做任何事情。
func NopCloser(r io.Reader) io.ReadCloser
// TempFile 在 dir 目录中创建一个以 prefix 为前缀的临时文件,并将其以读
// 写模式打开。返回创建的文件对象和遇到的错误。
// 如果 dir 为空,则在默认的临时目录中创建文件(参见 os.TempDir),多次
// 调用会创建不同的临时文件,调用者可以通过 f.Name() 获取文件的完整路径。
// 调用本函数所创建的临时文件,应该由调用者自己删除。
func TempFile(dir, prefix string) (f *os.File, err error)
// TempDir 功能同 TempFile,只不过创建的是目录,返回目录的完整路径。
func TempDir(dir, prefix string) (name string, err error)
示例:读取一个目录
// 示例:读取目录
func main() {
rd, err := ioutil.ReadDir("/")
fmt.Println(err)
for _, fi := range rd {
if fi.IsDir() {
fmt.Printf("[%s]\n", fi.Name())
} else {
fmt.Println(fi.Name())
}
}
}
示例:读取一个文件,并把JSON反序列化
import (
"io/ioutil"
"encoding/json"
)
// 程序配置
type Config struct {
WsPort int `json:"wsPort"`
WsReadTimeout int `json:"wsReadTimeout"`
WsWriteTimeout int `json:"wsWriteTimeout"`
WsInChannelSize int `json:"wsInChannelSize"`
WsOutChannelSize int `json:"wsOutChannelSize"`
WsHeartbeatInterval int `json:"wsHeartbeatInterval"`
MaxMergerDelay int `json:"maxMergerDelay"`
MaxMergerBatchSize int `json:"maxMergerBatchSize"`
MergerWorkerCount int `json:"mergerWorkerCount"`
MergerChannelSize int `json:"mergerChannelSize"`
ServicePort int `json:"servicePort"`
ServiceReadTimeout int `json:"serviceReadTimeout"`
ServiceWriteTimeout int `json:"serviceWriteTimeout"`
ServerPem string `json:"serverPem"`
ServerKey string `json:"serverKey"`
BucketCount int `json:"bucketCount"`
BucketWorkerCount int `json:"bucketWorkerCount"`
MaxJoinRoom int`json:"maxJoinRoom"`
DispatchChannelSize int `json:"dispatchChannelSize"`
DispatchWorkerCount int `json:"dispatchWorkerCount"`
BucketJobChannelSize int `json:"bucketJobChannelSize"`
BucketJobWorkerCount int `json:"bucketJobWorkerCount"`
}
var (
G_config *Config
)
func InitConfig(filename string) (err error) {
var (
content []byte
conf Config
)
if content, err = ioutil.ReadFile(filename); err != nil {
return
}
if err = json.Unmarshal(content, &conf); err != nil {
return
}
G_config = &conf
return
}
示例:临时目录、临时文件
func main() {
// 创建临时目录
dir, err := ioutil.TempDir("", "Test")
if err != nil {
fmt.Println(err)
}
defer os.Remove(dir) // 用完删除
fmt.Printf("%s\n", dir)
// 创建临时文件
f, err := ioutil.TempFile(dir, "Test")
if err != nil {
fmt.Println(err)
}
defer os.Remove(f.Name()) // 用完删除
fmt.Printf("%s\n", f.Name())
}
GO系列-ioutil包的更多相关文章
- [js高手之路]深入浅出webpack教程系列9-打包图片(file-loader)用法
我们还是接着上文继续,本文我们要讲的是图片资源的打包,图片在静态排版中,经常出现的两个位置是css通过background引入背景,还有一种就是在html模板文件中用img标签引入的方式,如果要在we ...
- ioutil包二
ioutil包二 (原创随笔,转载请注明出处 http://www.cnblogs.com/majianguo/p/8016426.html) ioutil包实现了一些I/O实用功能,导出了7个函数和 ...
- go语言io和ioutil包的学习和使用
io包 package main; import ( "errors" "fmt" "io" ) //io包中定义了非常多的interfac ...
- go语言学习笔记---读取文件io/ioutil 包
io/ioutil 包几个函数方法 名称 作用 备注 ReadAll 读取数据,返回读到的字节 slice 1 ReadDir 读取一个目录,返回目录入口数组 []os.FileInfo, 2 Re ...
- Golang学习 - io/ioutil 包
------------------------------------------------------------ // Discard 是一个 io.Writer 接口,调用它的 Write ...
- Oracle系列之包
涉及到表的处理请参看原表结构与数据 Oracle建表插数据等等 建包 -- 建立包头 create package mypkg is procedure set_ctx(p_name in varc ...
- SpringBoot系列——jar包与war包的部署
前言 Spring Boot支持传统部署和更现代的部署形式.jar跟war都支持,这里参考springboot参考手册学习记录 两种方式 jar springboot项目支持创建可执行Jar,参考手册 ...
- go 学习之io/ioutil包
// Discard 是一个 io.Writer 接口,调用它的 Write 方法将不做任何事情// 并且始终成功返回.var Discard io.Writer = devNull(0) // Re ...
- Go语言系列之包
Go语言的包(package) 一.包介绍 包(package)是多个Go源码的集合,是一种高级的代码复用方案,Go语言为我们提供了很多内置包,如fmt.os.io等. 二.定义包 我们还可以根据自己 ...
随机推荐
- .Net Redis实战——实现文章投票并排序
本系列文章为学习Redis实战一书记录的随笔. 软件和环境版本:Redis:5.0.7 .Net 5.0 文中不会对Redis基础概念做过多介绍. Redis数据类型和命令可在菜鸟教程学习:http ...
- 安装 error: Microsoft Visual C++ 14.0 is required 解决方案
最近写的项目需要用到Python的第三方库,比如:mmh3, pyshark等等,而直接pip install ... 会报错:error: Microsoft Visual C++ 14.0 is ...
- NVIDIA数据中心深度学习产品性能
NVIDIA数据中心深度学习产品性能 在现实世界的应用程序中部署AI,需要训练网络以指定的精度融合.这是测试AI系统的最佳方法-准备将其部署在现场,因为网络随后可以提供有意义的结果(例如,对视频流正确 ...
- SpringCloud01:微服务概述
一.什么是微服务 微服务是一种架构风格,是一种架构设计方式,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独立部署,各个微服务之间是松耦合的.每个微服务仅关注于完成一件任务并很好地 ...
- 四、SSL虚拟证书
沿用练习三,配置基于加密网站的虚拟主机,实现以下目标: 域名为www.c.com 该站点通过https访问 通过私钥.证书对该站点所有数据加密 4.2 方案 源码安装Nginx时必须使用--with- ...
- Django基础之模型层(01)
内容概要 查询关键字 MySQL select from where group by having order by distinct limit r ...
- 会点自动化就要25k? 现在年轻人这么浮躁吗
面试中一问元素定位就对答如流.一问实际项目框架如何搭建就避重就轻.含糊其辞,这样的自动化实战能力也能拿25K?静待下文: 一.为什么现在自动化测试工资那么高呢? 结合现在的职场环境与企业用人需求,自动 ...
- 铂金07:整齐划一-CountDownLatch如何协调多线程的开始和结束
欢迎来到<并发王者课>,本文是该系列文章中的第20篇. 在上一篇文章中,我们介绍了Condition的用法.在本文中,将为你介绍CountDownLatch的用法.CountDownLat ...
- kubernetes获取崩溃容器/上一个容器的应用日志
kubectl logs命令将显示当前容器的日志.当你想知道为什么前一个容器终止时,你想看到的是前一个容器的日志,而不是当前容器的.可以通过添加--previous选项来完成: $ kubectl l ...
- 台达PLC开发笔记(二):台达PLC设置主机通讯参数为RTU并成功通讯
前言 前面使用485和网口与台达成功建立通讯,但是485是使用用的ASICC模式,多数情况下是使用RTU模式提升通讯效率. 下载安装台达ISPSoft软件 官网下载地址:https://d ...