首页 > 其他分享 >Go的文件操作:读写文件与IO接口

Go的文件操作:读写文件与IO接口

时间:2023-10-24 19:33:08浏览次数:25  
标签:文件 err IO Go txt os

大家好!我是[lincyang]。

今天我们要一起探讨Go语言中的文件操作,特别是读写文件和IO接口。

什么是文件操作?

文件操作是编程中不可或缺的一部分,涉及到数据的读取、写入、删除等。在Go语言中,这些操作主要通过osio两个标准库来完成。

为什么要进行文件操作?

  1. 数据持久化:程序运行结束后,内存中的数据会消失。通过文件操作,我们可以将这些数据保存下来。
  2. 数据交换:文件是数据交换的一种常见方式。例如,你可能需要读取一个CSV文件,并将数据导入数据库。
  3. 日志记录:几乎所有的应用程序都需要某种形式的日志记录,通常这些日志都保存在文件中。

如何进行文件操作?

读取文件

使用os.Openio.Reader
file, err := os.Open("example.txt")
if err != nil {
   log.Fatal(err)
}
defer file.Close()

reader := bufio.NewReader(file)
for {
   line, err := reader.ReadString('\n')
   if err == io.EOF {
       break
  }
   fmt.Println(line)
}
使用ioutil.ReadFile
data, err := ioutil.ReadFile("example.txt")
if err != nil {
   log.Fatal(err)
}
fmt.Println(string(data))

写入文件

使用os.Createio.Writer
file, err := os.Create("example.txt")
if err != nil {
   log.Fatal(err)
}
defer file.Close()

writer := bufio.NewWriter(file)
writer.WriteString("Hello, World!")
writer.Flush()
使用ioutil.WriteFile
err := ioutil.WriteFile("example.txt", []byte("Hello, World!"), 0644)
if err != nil {
   log.Fatal(err)
}

删除和重命名文件

// 删除文件
err := os.Remove("example.txt")
if err != nil {
   log.Fatal(err)
}

// 重命名文件
err = os.Rename("old.txt", "new.txt")
if err != nil {
   log.Fatal(err)
}

IO接口

Go语言的io包提供了ReaderWriter接口,这是所有IO操作的基础。
  • Reader接口:主要方法是Read(p []byte) (n int, err error)
  • Writer接口:主要方法是Write(p []byte) (n int, err error)
这两个接口被广泛应用在各种IO操作中,包括网络IO、文件IO等。

总结

Go语言提供了一套完善的文件操作API,不仅支持基础的文件读写,还支持更为复杂的文件操作,如删除、重命名等。通过io.Readerio.Writer接口,Go语言的文件操作具有很高的扩展性和灵活

标签:文件,err,IO,Go,txt,os
From: https://www.cnblogs.com/cheyunhua/p/17785591.html

相关文章

  • 简单有效!Direct Inversion: 三行代码提升基于Diffusion的图像编辑效果
    前言 本文介绍了由香港中文大学和粤港澳大湾区数字经济院联合提出的基于Diffusion的Inversion方法DirectInversion,可以在现有编辑算法上即插即用,无痛提点。本文转载自PaperWeekly作者:KK仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术......
  • 安信可小安派【IO中断】基于AI-M6X MCU
    最近在研究小安派的中断。昨晚写了一个Demo来进行测试。关于什么是中断这里已经讲的很清楚了。首先贴上引用参考。第一个是泽哥写的中断:http://ai-thinker.com/forum.php?mod=viewthread&tid=562&highlight=%E4%B8%AD%E6%96%AD&_dsign=fe47e0a0复制代码这个是我自己写......
  • 论文:Going Deeper with Convolutions-GoogleNet
    论文名:GoingDeeperwithConvolutions深入了解卷积了解GoogleNet研究问题:研究方法:主要结论:模型:问题:行文结构梳理:......
  • Visual Studio code中运行JS代码
    第一步:安装插件: 下面output可以看到输出  2、visualstudiocode中如何创建项目;参考地址:https://blog.csdn.net/weixin_45991687/article/details/123859403?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169814378016800180691969%2522%252C%2522scm%25......
  • Runner GoUI自动化测试发布
    构建自动化测试体系是当下每个项目团队愿意去做的,自动化测试减少重复操作节省人力成本。RunnerGoUI自动化平台RunnerGo提供从API管理到API性能再到可视化的API自动化、UI自动化测试功能模块,覆盖了整个产品测试周期。RunnerGoUI自动化基于Selenium浏览器自动化方案构建,内嵌高度可......
  • 头文件和类的声明
    1.CvsC++关于数据和函数CDataFunctions对于C来说,数据大部分情况是所有函数都可以访问的,这样对程序来说会变得很混乱C++DataMembersMemberFunctions对于C++来说,数据和函数封装在一起形成类,可以设定为数据只能让类里的函数访问,具有良好的组织性2.C++关于数......
  • SpringBoot 实现大文件上传下载、分片、断点续传教程
    WebUploader是由BaiduWebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。大文件上传实现思路:分片: 按照自定义缓冲区大小,将大文件分成多个小文件片段。断点续传: 根据分片数量,给每个小文件通过循环起对应名称,当文件下载中断在续传时,判断小文件名称若存在......
  • 记录--vue3实现excel文件预览和打印
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助前言在前端开发中,有时候一些业务场景中,我们有需求要去实现excel的预览和打印功能,本文在vue3中如何实现Excel文件的预览和打印。预览excel关于实现excel文档在线预览的做法,一种方式是通过讲文档里的数据处理成......
  • golang的Leaf框架安装步骤
    最近在学习golang的Leaf游戏服务器框架(官方github),官方的安装步骤,非常简单,如下图:我在安装的时候也遇到一些疑问,因此记录下来我的实操步骤!1、我的现有GOPATH=E:\Go,src目录下有一些做过的项目2、获取LeafServer,我在src目录下clone的,遵循以前的原则,项目文件都放到GOPATH的src目录......
  • Runner GoUI自动化测试发布
    构建自动化测试体系是当下每个项目团队愿意去做的,自动化测试减少重复操作节省人力成本。RunnerGoUI自动化平台RunnerGo提供从API管理到API性能再到可视化的API自动化、UI自动化测试功能模块,覆盖了整个产品测试周期。RunnerGoUI自动化基于Selenium浏览器自动化方案构建,内嵌高......