• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Golang > GO语言常用的文件读取方式

GO语言常用的文件读取方式

作者:shichen2014 字体:[增加 减小] 来源:互联网

shichen2014 通过本文主要向大家介绍了go语言读取文件,go语言读文件,go语言web下载文件,go语言文件操作,go语言等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了GO语言常用的文件读取方式。分享给大家供大家参考。具体分析如下:

Golang 的文件读取方法很多,刚上手时不知道怎么选择,所以贴在此处便后速查。

一次性读取

小文件推荐一次性读取,这样程序更简单,而且速度最快。
 f, err := os.Open(filePth)
 if err != nil {
  return nil, err
 }

 return ioutil.ReadAll(f)
}</div>
还有更加简单的方法,我经常使用ioutil.ReadFile(filePth)

分块读取

可在速度和内存占用之间取得很好的平衡。

import (
 "bufio"
 "io"
 "os"
)

func processBlock(line []byte) {
 os.Stdout.Write(line)
}

func ReadBlock(filePth string, bufSize int, hookfn func([]byte)) error {
 f, err := os.Open(filePth)
 if err != nil {
  return err
 }
 defer f.Close()

 buf := make([]byte, bufSize) //一次读取多少个字节
 bfRd := bufio.NewReader(f)
 for {
  n, err := bfRd.Read(buf)
  hookfn(buf[:n]) // n 是成功读取字节数

  if err != nil { //遇到任何错误立即返回,并忽略 EOF 错误信息
   if err == io.EOF {
    return nil
   }
   return err
  }
 }

 return nil
}

func main() {
 ReadBlock("test.txt", 10000, processBlock)
}</div>

逐行读取

逐行读取有的时候真的很方便,性能可能慢一些,但是仅占用极少的内存空间。

import (
 "bufio"
 "io"
 "os"
)

func processLine(line []byte) {
 os.Stdout.Write(line)
}

func ReadLine(filePth string, hookfn func([]byte)) error {
 f, err := os.Open(filePth)
 if err != nil {
  return err
 }
 defer f.Close()

 bfRd := bufio.NewReader(f)
 for {
  line, err := bfRd.ReadBytes('\n')
  hookfn(line) //放在错误处理前面,即使发生错误,也会处理已经读取到的数据。
  if err != nil { //遇到任何错误立即返回,并忽略 EOF 错误信息
   if err == io.EOF {
    return nil
   }
   return err
  }
 }
 return nil
}

func main() {
 ReadLine("test.txt", processLine)
}</div>

希望本文所述对大家的GO语言程序设计有所帮助。

</div>

您可能想查找下面的文章:

  • 使用Go语言实现远程传输文件
  • Go语言编程中判断文件是否存在是创建目录的方法
  • Go语言编程中对文件读写的基本方法整理
  • go语言读取json并下载高清妹子图片
  • GO语言实现文件上传代码分享
  • go语言遍历文件夹示例
  • go语言检测文件是否存在的方法
  • go语言读取csv文件并输出的方法
  • go语言对文件按照指定块大小进行分割的方法
  • go语言实现文件分割的方法

相关文章

  • 创建第一个Go语言程序Hello,Go!
  • go语言中使用timer的常用方式
  • Go语言指针访问结构体的方法
  • 深入解析Go语言编程中slice切片结构
  • 在Go语言程序中使用gojson来解析JSON格式文件
  • GO语言实现列出目录和遍历目录的方法
  • 深入解析快速排序算法的原理及其Go语言版实现
  • Go语言接口用法实例
  • GO语言并发编程之互斥锁、读写锁详解
  • Go语言通过smtp发送邮件的方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • go的websocket实现原理与用法详解
    • Go语言接口用法实例
    • Ubuntu安装Go语言运行环境
    • Golang学习笔记(三):控制流
    • Go语言中函数的参数传递与调用的基本方法
    • golang 函数以及函数和方法的详解及区别
    • Go语言中使用flag包对命令行进行参数解析的方法
    • 理解Golang中的数组(array)、切片(slice)和map
    • Go语言编程中判断文件是否存在是创建目录的方法
    • Go语言实现的一个简单Web服务器

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有