Go 文件操作(创建、打开、读、写)
1、使用io/ioutil进行文件操作:
a、读文件:
func ReadAll(r io.Reader) ([]byte, error)
func ReadFile(filename string) ([]byte, error)
b、写文件:
func WriteFile(filename string, data []byte, perm os.FileMode) error
2、使用os进行文件操作:
a、创建文件:
func Create(name string) (file *File, err error)
func NewFile(fd uintptr, name string) *File
b、打开文件:
func Open(name string) (*File, error)
func OpenFile(name string, flag int, perm FileMode) (*File, error)
c、读文件:
func (f *File) Read(b []byte) (n int, err error)
d、写文件:
func (f *File) Write(b []byte) (n int, err error)
3、使用bufio进行文件操作:
a、读文件:
func NewReader(rd io.Reader) *Reader
func (b *Reader) Read(p []byte) (n int, err error)
func (b *Reader) ReadLine() (line []byte, isPrefix bool, err error)
b、写文件:
func NewWriter(w io.Writer) *Writer
func (b *Writer) Write(p []byte) (nn int, err error)
4、代码示例:
package mainimport ("bufio""fmt""io""io/ioutil""os""time"
)//read1()——read4() 读取速度依次变慢
func read1(path string) string {fi, err := os.Open(path)if err != nil {panic(err)}defer fi.Close()fd, err := ioutil.ReadAll(fi)return string(fd)
}func read2(path string) string {fi, err := ioutil.ReadFile(path)if err != nil {panic(err)}return string(fi)
}func read3(path string) string {fi, err := os.Open(path)if err != nil {panic(err)}defer fi.Close()f := bufio.NewReader(fi)buf := make([]byte, 1024)chunks := make([]byte, 1024, 1024)for {n, err := f.Read(buf)if err != nil && err != io.EOF {panic(err)}if 0 == n {break}chunks = append(chunks, buf[:n]...)}return string(chunks)
}func read4(path string) string {fi, err := os.Open(path)if err != nil {panic(err)}defer fi.Close()buf := make([]byte, 1024)chunks := make([]byte, 1024, 1024)for {n, err := fi.Read(buf)if err != nil && err != io.EOF {panic(err)}if 0 == n {break}chunks = append(chunks, buf[:n]...)}return string(chunks)
}func main() {file := "test.log"start := time.Now()read1(file)t1 := time.Now()fmt.Printf("Cost time %v\n", t1.Sub(start).Nanoseconds())read2(file)t2 := time.Now()fmt.Printf("Cost time %v\n", t2.Sub(t1).Nanoseconds())read3(file)t3 := time.Now()fmt.Printf("Cost time %v\n", t3.Sub(t2).Nanoseconds())read4(file)t4 := time.Now()fmt.Printf("Cost time %v\n", t4.Sub(t3).Nanoseconds())
}
总结:
read1()到read4()方法对文件的读取操作速率逐渐减小。
Go 文件操作(创建、打开、读、写)相关推荐
- C++之文件操作探究(三):写文件——二进制文件
相关博文:C++之文件操作探究(一):写文件--文本文件 相关博文:C++之文件操作探究(二):读文件--文本文件 相关博文:C++之文件操作探究(三):写文件--二进制文件 相关博文:C++之文件操 ...
- C++之文件操作探究(一):写文件——文本文件
相关博文:C++之文件操作探究(一):写文件--文本文件 相关博文:C++之文件操作探究(二):读文件--文本文件 相关博文:C++之文件操作探究(三):写文件--二进制文件 相关博文:C++之文件操 ...
- 史上最全面的UE4 文件操作,打开,读、写,增、删、改、查
一.前期操作 创建一个C++项目,并且创建一个C++蓝图库函数,并且加入头文件 #include "HAL/PlatformFilemanager.h" #include &quo ...
- Python文件操作IO open 读-取-写
PythonIO文件操作,读.取.写 本篇内容 文件的操作. ▷文件的练习 ▷文件的操作 读取信息 .写入信息.文件有那么多的字,在什么地方写入.怎么 控制它. 文件对象 === 读取 === 写入 ...
- python常见的文件操作:打开、创建等
import osdata_path = 'xxx/xxx/xxx.txt' data1_path = 'yyy/yyy/yyy.txt' path = 'zzz/zzz/zzz'if not os. ...
- JAVA操作属性文件,可进行读 写 更改
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! JAVA ...
- golang 文件操作 创建 读写 复制移动 权限 删除
目录 介绍 基本操作 创建空文件 Truncate文件 得到文件信息 重命名和移动 删除文件 打开和关闭文件 检查文件是否存在 检查读写权限 改变权限.拥有者.时间戳 硬链接和软链接 读写 复制文件 ...
- VC 文件操作大全,打开,保存,复制,删除,查找等
各种关于文件的操作在程序设计中十分常见,如果能对这些操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而可以在较短的时间内编写出高效 的代码.本文对Visual C++中有关文件操作进行了全面的 ...
- MFC文件操作大全,打开,保存,复制,删除,查找等
各种关于文件的操作在程序设计中十分常见,如果能对这些操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而可以在较短的时间内编写出高效 的代码.本文对Visual C++中有关文件操作进行了全面的 ...
- C++文件操作(打开、关闭、文件读取数据存入数组)
文件操作 1.文件打开 2.文件关闭 3.文件数据读取 4.数据输出至文本文件 有待补充-- 1.文件打开 在fstream类中,open():实现打开文件的操作,从而将数据流和文件进行关联. voi ...
最新文章
- LigerUI权限系统之组织结构
- nginx php-fpm display_errors,php5-fpm的display_errors不能使用nginx
- saltstack一些常用模块和api调用方法
- 基于SQL on Hadoop的数据仓库技术
- 论文盘点:性别年龄分类器详解
- VTK:Utilities之OffScreenRendering
- 关于扫描的一个比较好的网站
- C# 8 的新提案:new 关键字类型推断
- python3调用java_Python3-JPype调用Java代码
- session和cookie的区别和联系,session的生命周期,多个服务部署时session管理
- 跨服务器查询信息的sql
- 如何理解 MySQL 中的 = 操作符?
- 用 CSS 隐藏页面元素
- paip.银联支付接口订单号uuid算法
- java pppoe_ADSL(PPPOE)接入指南
- r语言ggplot2误差棒图快速指南
- 解决 “ISO C++ 不允许比较指针和整数的值 “
- SCI论文并没有想像中的难写,发表SCI论文的小技巧。2012年和2013年SCI期刊论文和EI期刊论文
- python中哈希表和set的使用
- 基于51单片机的公交站自动播报系统proteus仿真 程序原理图设计
热门文章
- 给小仙女讲什么是javascript(一)
- python余数不等于的符号_有乐 这些符号如此重要,不知道就等于“白练琴”
- Java的支持率让小伙伴们都惊呆了
- Android6.0 ios,意超越iOS9!谷歌寄希望于Android6.0系统
- 各种风格简洁单页响应式html5模板_简洁 响应式 单页 跳转 设计 案例 源码340多套订餐企业模板高大尚响应式网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响
- 90后都会选择的购车模式“网上购车平台一成首付”
- C语言 - 字符常量 字符串常量
- [FZYZOJ 2132] Zrn神犇之一起来看流星雨
- android英语,Android 每日一句(英语)
- 数字化转型时代!你一定要了解的低代码