golang 读取文件

golang读取文件的常用方法 //按字节读取,将整个文件读取到缓冲区buffer func test1() { file,err := os.Open("filetoread.txt") if err != nil { log.Fatal(err) } defer file.Close() fileinfo,err := file.Stat() if err != nil { log.Fatal(err) 阅读详情

使用go语言读取文件的各种方式整理。

一次性加载到内存中

// * 整个文件读到内存,适用于文件较小的情况
func readAllIntoMemory(filename string) (content []byte, err error) {
	fp, err := os.Open(filename) // 获取文件指针
	if err != nil {
		return nil, err
	}
	defer fp.Close()

	fileInfo, err := fp.Stat()
	if err != nil {
		return nil, err
	}
	buffer := make([]byte, fileInfo.Size())
	_, err = fp.Read(buffer) // 文件内容读取到buffer中
	if err != nil {
		return nil, err
	}
	return buffer, nil
}

一次性加载到内存中适用于小文件。 如果文件太大, 内存紧张的情况下, 可以借助缓冲, 分多次读取。

分块读取

// * 一块一块地读取, 即给一个缓冲, 分多次读到缓冲中
func readByBlock(filename string) (content []byte, err error) {
	fp, err := os.Open(filename) // 获取文件指针
	if err != nil {
		return nil, err
	}
	defer fp.Close()

	const bufferSize = 64 // 缓冲大小, 每次读取64个字节

	buffer := make([]byte, bufferSize)
	for {
		// 注意这里要取bytesRead, 否则有问题
		bytesRead, err := fp.Read(buffer) // 文件内容读取到buffer中
		content = append(content, buffer[:bytesRead]...)
		if err != nil {
			if err == io.EOF {
				err = nil
				break
			} else {
				return nil, err
			}
		}
	}
	return
}

有时我们也需要按行处理

按行读

// 逐行读取, 一行是一个[]byte, 多行就是[][]byte
func readByLine(filename string) (lines [][]byte, err error) {
	fp, err := os.Open(filename) // 获取文件指针
	if err != nil {
		return nil, err
	}
	defer fp.Close()
	bufReader := bufio.NewReader(fp)

	for {
		line, _, err := bufReader.ReadLine() // 按行读
		if err != nil {
			if err == io.EOF {
				err = nil
				break
			}
		} else {
			lines = append(lines, line)
		}
	}

	return
}

 

 

浅谈Golang是如何读取文件内容的(7种) 主要介绍了浅谈Golang是如何读取文件内容的,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 立即下载

相关推荐

[前沿技术] AMD FSR 1.0源码解析:EASU算法实现细节与优化策略

本文深入解析了AMD FSR 1.0技术的核心——EASU(边缘自适应空间升频)算法。通过剖析其源码,详细阐述了EASU如何利用12-tap采样窗口、基于Lanczos滤波器的多项式近似以及自适应的边缘检测机制,在无需AI模型的情况下实现高质量图像放大。文章重点揭示了其极致的GPU优化策略,包括寄存器利用、采样优化和避免动态分支,为理解高性能图形算法提供了绝佳范例。

docker7nomad的博客 513

Golang文件

Golang文件

wgchen 1231

【论文速读】MLDT:基于开源大语言模型的复杂长时机器人任务规划多层次分解方法

—在数据驱动的人工智能技术领域,开源大语言模型(LLMs)在机器人任务规划中的应用是一个重要的里程碑。近期基于开源大语言模型的机器人任务规划方法通常利用大量的任务规划数据集来提升模型的规划能力。虽然这些方法展现出了一定的前景,但它们在处理复杂长时任务时存在困难,因为这类任务需要理解更多的上下文信息并生成更长的动作序列。本文提出多层次分解任务规划方法(MLDT)来解决这一局限性。该方法创新性地在目标级、任务级和动作级对任务进行分解,以应对复杂长时任务带来的挑战。

muyulingfengye的博客 1616

GoLang读取文件10种的方法

读取文件的 10 种方法

weixin_52690231的博客 2万+

Go 语言读取文件的几种方式

本文介绍了 Go 语言读取文件的几种方式,函数将整个文件读成一个字符串。这个函数很方便,但不应该用于非常大的文件。希望能对你有所帮助!

金戈鐡馬 1982

Golang 按行读取文件的 3 种方法

Golang 是一种现代的编程语言,它具有高效、简洁和可扩展等特点,因此在各种领域广泛应用。在 Golang 中,读取文件是一个常见的操作。在本篇技术博客中,我将介绍如何在 Golang 中按行读取文件

Doublelv 的博客专栏。 7524

Go语言 通过文件流判断文件头来识别文件类型

系统中需要用到文件上传的功能,但是从系统安全的角度上来说需要判断上传文件的格式,防止将病毒木马等有害的文件上传到服务器上。 判断文件类型有三种方式 1、通过文件后缀名 这个方法简单容易,但是也是最容易被欺骗的方法,修改文件的后缀名即可实现欺骗系统。 2、通过Content-Type判断 这个是通过判断文件的MIME类型进行判断,我们在通过form表单上传文件时,在上传的request域里面会获取当...

weixin_33672400的博客 4392

golang中go build 后读取配置文件

golang中go build 后读取配置文件,**问题的根本原因是:** 当你在开发时依赖相对路径加载配置文件,但在打包程序后,程序的工作目录和资源文件的路径不再一致,导致无法找到配置文件。 **解决方法:** 通过动态获取可执行文件的路径,然后根据程序所在目录计算出资源文件(如配置文件)的路径。这样可以确保无论程序从哪里运行,都能够准确找到相应的配置文件

席万里的博客 2215

Go语言(Golang) -- 读取文件内容

Golang文件读取方法很多,所以贴在此处便后速查。 一次性读取文件推荐一次性读取,这样程序更简单,而且速度最快。 代码如下: func ReadAll(filePth string) ([]byte, error) { f, err := os.Open(filePth) if err != nil { return nil, err } return ioutil.ReadAll(f) } 还有更加简单的方法,我经常使用ioutil.ReadFile(fil.

weixin_42117918的博客 1248

Golang:ini文件读取,go-ini

`go-ini`是一个非常方便、高效的go配置文件操作库。使用它在项目中读取和修改配置文件。`go-ini`的多个配置项通过分区(`section`)来划分。有默认()分区和命名的分区,没有给分区命名就是默认分区,默认分区必须写在任何一个命名分区的上边。每个配置项通过换行来区分。

jayLog的博客 3525

【go语言专题】golang如何快速读取复杂json文件

文章目录前言实践 前言 有时候我们需要从文件读取josn并且反序列化为struct,首先肯定最头疼的就是创建是这个struct怎么建。 今天分享的是一个工具: https://oktools.net/json2go,可以快速将json转换成go的struct。 实践 首先打开网站,把json输入进来,得到结构体,复制一下。 创建三个文件,分别用来读json、测试、还有一个josn文件...

batman 2974

golang读取文件总结

使用go语言读取文件和各种方式整理。 一次性加载到内存中 // * 整个文件读到内存,适用于文件较小的情况 func readAllIntoMemory(filename string) (content []byte, err error) { fp, err := os.Open(filename) // 获取文件指针 if err != nil { return nil, err ...

开心就好的专栏 4431

Go语言_Go_Golang 逐行读取文件

f, err := os.Open("test.txt") if err != nil { panic(err) } defer f.Close() rd := bufio.NewReader(f) for { line, err := rd.ReadString('\n') //以'\n'为结束符读入一行

嘿,逮到一只大码农 1072

Golang(Go语言)读取文件基本用法

需要用到os和bufio包 import "os"import "bufio" 用os.Open打开一个文件,用bufio.NewReader来读取文件 file, err := os.Open("input.dat")if err!= nil { fmt.Println("failed to open") return}defer file.Close()reade

陈鹏万里 4127

golang 写入和读取pb文件

golang 读取pb文件 记录一次golang 读取pb的demo 定义proto 文件tree 如下: . ├── main.go ├── output │ └── output.pb └── proto ├── test.pb.go └── test.proto cat test.pb.go syntax = "proto3"; package example; me...

kkx的博客 3246

Golang并发读取文件数据并写入数据库

记录一下用Golang做并发,创建多个goroutine去读取指定目录下的多个JSON格式的数据文件,并将其每条数据格式化后写入到Oracle数据库

Monkey_D_Newdun的博客 5417

Golang读取文件和处理超大文件方案

文章目录1. 文件整体读取代码示例1代码示例22. 文件分片读取代码示例3. 文件逐行读取示例代码1代码示例24. 总结5. 参考资料 Golang 操作文件读取的方法很多,适用的场景也是各不相同,在此我们将文件读取分为如下几种 : 文件整体读取 文件分片读取(块级读取) 文件行级读取 系统的配置不同,执行的耗时也不相同,此处给出一参考 系统配置 : OS : Windows10 Memory : 16G CPU (英特尔)Intel® Core™ i3-4370 CPU @ 3.80GHz

Gcaptain 7528

golang读取文件

/* go读取文件 读写文件是很多程序的基本任务 */ package main import ( "bufio" "fmt" "io" "io/ioutil" "os" ) /* 读取文件的函数调用大多需要检查错误 使用下面这个错误检查方法可以方便点 */ func check(e error) { if e != ...

boshuzhang的专栏 447

golang文件读取-按行读取

golang文件读取-按行读取 a.txt文件内容: ABCDEFGHI HELLO GOLANG package main import ( "fmt" "os" "io" "bufio" "strings" ) func main() { fileName := "C:\\Robert\\日志分析\\tools_go

迎风的舵手 1万+
上一篇: golang beego 文件上传
下一篇: linux c 判断路径是 目录还是文件
whatday
博客等级 码龄20年 3835粉丝 96原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值