Golang之如何读取文件内容

 更新时间:2023年06月12日 10:03:06   作者:mrtwenty  
这篇文章主要介绍了Golang之如何读取文件内容问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Golang读取文件内容

可以一次性读取,也可以按行读取,也可以按字节读取,一般小文件直接一次性读取,当文件内容太大,内存不足,建议逐行读取处理。

package main
import (
	"bufio"
	"fmt"
	"io"
	"io/ioutil"
	"os"
)
func main() {
	//1、一次性读取文件内容,还有一个 ReadAll的函数,也能读取
	data, err := ioutil.ReadFile("./util/file.go")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(string(data))
	//2、逐行读取
	file, err := os.Open("./util/file.go")   //打开
	if err != nil { fmt.Println(err); return  }
	defer file.Close() //关闭
	line := bufio.NewReader(file)
	for {
		content, _, err := line.ReadLine()
		if err == io.EOF { break }
		fmt.Println(string(content))
	}
	//3、按照字节数读取
	file,err= os.Open("./util/file.go")
	if err!=nil{ fmt.Println(err); return }
	defer file.Close()
	//读取数据
	bs := make([] byte,4)
	for {
		_, err = file.Read(bs)
		if err == io.EOF { break}
		fmt.Print(string(bs))
	}
}

Golang读取文件、图片字节流

读取图片的字节流

package main
import (
	"io/ioutil"
	"log"
	"net/http"
	"os"
)
func main() {
	// 这里以图片为例子,excel,world也是可以的
	url := "https://file.hytwfy.top/jxb.jpg"
	resByte, err := getRemote(url)
	if err != nil {
		log.Println(err)
	}
	// resByte 就是要上传到服务器的字节流
}
func getRemote(url string) ([]byte, error) {
	res, err := http.Get(url)
	if err != nil {
		// 如果有错误返回错误内容
		return nil, err
	}
	// 使用完成后要关闭,不然会占用内存
	defer res.Body.Close()
	// 读取字节流
	bytes, err := ioutil.ReadAll(res.Body)
	if err != nil {
		return nil, err
	}
	return bytes, err
}
// 获得资源,从本地
// 这里以图片为例子,excel,world也是可以的
func getLocal(url string) ([]byte, error) {
	fp, err := os.OpenFile(url, os.O_CREATE|os.O_APPEND, 6) // 读写方式打开
	if err != nil {
		// 如果有错误返回错误内容
		return nil, err
	}
	defer fp.Close()
	bytes, err := ioutil.ReadAll(fp)
	if err != nil {
		return nil, err
	}
	return bytes, err
}

如果要对处理进行处理,可以新建一个字节流进行处理

// 新建空间字节流
newByte := new(bytes.Buffer)
/*
	文件操作
	xxx
*/
// 读取写入的内容
reader := bytes.NewReader(newByte.Bytes())

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • GoFrame glist 基础使用和自定义遍历

    GoFrame glist 基础使用和自定义遍历

    这篇文章主要为大家介绍了GoFrame glist的基础使用和自定义遍历示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Go语言dolphinscheduler任务调度处理

    Go语言dolphinscheduler任务调度处理

    这篇文章主要为大家介绍了Go语言dolphinscheduler任务调度处理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Go变量作用域代码实战详解

    Go变量作用域代码实战详解

    Go语言提供了几种不同的作用域类型,使得开发者可以灵活地控制变量的可见范围和生命周期,本章节将详细概述Go语言中变量的各种作用域,帮助读者更好地理解和应用这些概念,需要的朋友可以参考下
    2024-06-06
  • 详解go中的defer链如何被遍历执行

    详解go中的defer链如何被遍历执行

    为了在退出函数前执行一些资源清理的操作,例如关闭文件、释放连接、释放锁资源等,会在函数里写上多个defer语句,多个_defer 结构体形成一个链表,G 结构体中某个字段指向此链表,那么go中的defer链如何被遍历执行,本文将给大家详细的介绍,感兴趣的朋友可以参考下
    2024-01-01
  • go语言题解LeetCode1128等价多米诺骨牌对的数量

    go语言题解LeetCode1128等价多米诺骨牌对的数量

    这篇文章主要为大家介绍了go语言题解LeetCode1128等价多米诺骨牌对的数量示例详解,
    2022-12-12
  • Go 中的Map与字符处理指南

    Go 中的Map与字符处理指南

    在Go中,map可以存储字符,但需要理解字符在Go中的表示方式,本文给大家介绍Go中的Map与字符处理指南,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-06-06
  • 浅析Golang中变量与常量的声明与使用

    浅析Golang中变量与常量的声明与使用

    变量、常量的声明与使用是掌握一门编程语言的基础,这篇文章主要为大家详细介绍了Golang中变量与常量的声明与使用,需要的可以参考一下
    2023-04-04
  • Go语言Swagger实现为项目生成 API 文档

    Go语言Swagger实现为项目生成 API 文档

    Swagger 是一个基于 OpenAPI 规范设计的工具,用于为 RESTful API 生成交互式文档,下面小编就来介绍一下如何在 Go 项目中集成 Swagger,特别是结合 Gin 框架生成 API 文档
    2025-03-03
  • 高效封禁:利用Go封装功能,提升封禁操作效率

    高效封禁:利用Go封装功能,提升封禁操作效率

    在网络安全领域,封禁操作是一项重要的任务,用于阻止恶意行为和保护系统安全,而利用Go语言封装功能可以提升封禁操作的效率,Go语言具有高效的并发性能和简洁的语法,使得开发者可以快速构建高性能的封禁系统,
    2023-10-10
  • golang泛型Generics的实现

    golang泛型Generics的实现

    本文主要介绍了golang泛型Generics的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-04-04

最新评论