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 文件操作(创建、打开、读、写)相关推荐

  1. C++之文件操作探究(三):写文件——二进制文件

    相关博文:C++之文件操作探究(一):写文件--文本文件 相关博文:C++之文件操作探究(二):读文件--文本文件 相关博文:C++之文件操作探究(三):写文件--二进制文件 相关博文:C++之文件操 ...

  2. C++之文件操作探究(一):写文件——文本文件

    相关博文:C++之文件操作探究(一):写文件--文本文件 相关博文:C++之文件操作探究(二):读文件--文本文件 相关博文:C++之文件操作探究(三):写文件--二进制文件 相关博文:C++之文件操 ...

  3. 史上最全面的UE4 文件操作,打开,读、写,增、删、改、查

    一.前期操作 创建一个C++项目,并且创建一个C++蓝图库函数,并且加入头文件 #include "HAL/PlatformFilemanager.h" #include &quo ...

  4. Python文件操作IO open 读-取-写

    PythonIO文件操作,读.取.写 本篇内容 文件的操作. ▷文件的练习 ▷文件的操作 读取信息 .写入信息.文件有那么多的字,在什么地方写入.怎么 控制它. 文件对象 ===  读取 === 写入 ...

  5. python常见的文件操作:打开、创建等

    import osdata_path = 'xxx/xxx/xxx.txt' data1_path = 'yyy/yyy/yyy.txt' path = 'zzz/zzz/zzz'if not os. ...

  6. JAVA操作属性文件,可进行读 写 更改

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! JAVA ...

  7. golang 文件操作 创建 读写 复制移动 权限 删除

    目录 介绍 基本操作 创建空文件 Truncate文件 得到文件信息 重命名和移动 删除文件 打开和关闭文件 检查文件是否存在 检查读写权限 改变权限.拥有者.时间戳 硬链接和软链接 读写 复制文件 ...

  8. VC 文件操作大全,打开,保存,复制,删除,查找等

    各种关于文件的操作在程序设计中十分常见,如果能对这些操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而可以在较短的时间内编写出高效 的代码.本文对Visual C++中有关文件操作进行了全面的 ...

  9. MFC文件操作大全,打开,保存,复制,删除,查找等

    各种关于文件的操作在程序设计中十分常见,如果能对这些操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而可以在较短的时间内编写出高效 的代码.本文对Visual C++中有关文件操作进行了全面的 ...

  10. C++文件操作(打开、关闭、文件读取数据存入数组)

    文件操作 1.文件打开 2.文件关闭 3.文件数据读取 4.数据输出至文本文件 有待补充-- 1.文件打开 在fstream类中,open():实现打开文件的操作,从而将数据流和文件进行关联. voi ...

最新文章

  1. LigerUI权限系统之组织结构
  2. nginx php-fpm display_errors,php5-fpm的display_errors不能使用nginx
  3. saltstack一些常用模块和api调用方法
  4. 基于SQL on Hadoop的数据仓库技术
  5. 论文盘点:性别年龄分类器详解
  6. VTK:Utilities之OffScreenRendering
  7. 关于扫描的一个比较好的网站
  8. C# 8 的新提案:new 关键字类型推断
  9. python3调用java_Python3-JPype调用Java代码
  10. session和cookie的区别和联系,session的生命周期,多个服务部署时session管理
  11. 跨服务器查询信息的sql
  12. 如何理解 MySQL 中的 = 操作符?
  13. 用 CSS 隐藏页面元素
  14. paip.银联支付接口订单号uuid算法
  15. java pppoe_ADSL(PPPOE)接入指南
  16. r语言ggplot2误差棒图快速指南
  17. 解决 “ISO C++ 不允许比较指针和整数的值 “
  18. SCI论文并没有想像中的难写,发表SCI论文的小技巧。2012年和2013年SCI期刊论文和EI期刊论文
  19. python中哈希表和set的使用
  20. 基于51单片机的公交站自动播报系统proteus仿真 程序原理图设计

热门文章

  1. 给小仙女讲什么是javascript(一)
  2. python余数不等于的符号_有乐 这些符号如此重要,不知道就等于“白练琴”
  3. Java的支持率让小伙伴们都惊呆了
  4. Android6.0 ios,意超越iOS9!谷歌寄希望于Android6.0系统
  5. 各种风格简洁单页响应式html5模板_简洁 响应式 单页 跳转 设计 案例 源码340多套订餐企业模板高大尚响应式网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响
  6. 90后都会选择的购车模式“网上购车平台一成首付”
  7. C语言 - 字符常量 字符串常量
  8. [FZYZOJ 2132] Zrn神犇之一起来看流星雨
  9. android英语,Android 每日一句(英语)
  10. 数字化转型时代!你一定要了解的低代码