go实现文件的读写

读文件

1.ioutil.ReadFile

package mainimport ("fmt""io/ioutil"
)func main() {filePath := "example.txt"data, err := ioutil.ReadFile(filePath)if err != nil {fmt.Printf("无法读取文件:%v\n", err)return}fmt.Printf("文件内容:%s\n", data)
}

Go 1.16 版本中,ioutil.ReadFile 函数被标记为过时,并推荐使用 os.ReadFile 函数代替

2.os.ReadFile

package mainimport ("fmt""os"
)func main() {// 文件路径filePath := "example.txt"// 读取文件data, err := os.ReadFile(filePath)if err != nil {fmt.Printf("无法读取文件:%v\n", err)return}fmt.Printf("文件内容:%s\n", data)
}

3.使用 os.Open 和 bufio.Reader
使用 os.Open 函数打开文件并返回一个文件对象,然后使用 bufio.Reader 对象逐行读取文件内容

package mainimport ("bufio""fmt""os"
)func main() {filePath := "example.txt"file, err := os.Open(filePath)if err != nil {fmt.Printf("无法打开文件:%v\n", err)return}defer file.Close()scanner := bufio.NewScanner(file)for scanner.Scan() {line := scanner.Text()fmt.Println(line)}if err := scanner.Err(); err != nil {fmt.Printf("读取文件出错:%v\n", err)}
}

4.使用 os.Open 和 io.Read
使用 os.Open 函数打开文件并返回一个文件对象,然后使用 io.Read 接口的实现来读取文件内容

package mainimport ("fmt""io""os"
)func main() {filePath := "example.txt"file, err := os.Open(filePath)if err != nil {fmt.Printf("无法打开文件:%v\n", err)return}defer file.Close()buffer := make([]byte, 1024)for {n, err := file.Read(buffer)if err != nil {if err == io.EOF {break}fmt.Printf("读取文件出错:%v\n", err)return}fmt.Print(string(buffer[:n]))}
}

在上述示例中,我们使用 os.Open 函数打开指定文件,并返回一个文件对象 file。然后,我们使用一个字节切片 buffer 来存储读取的数据,通过循环调用 file.Read 来不断读取文件内容。当读取到文件末尾时,file.Read 会返回 io.EOF 错误,我们可以通过判断该错误来退出循环。

写文件## 标题

1.os.WriteFile

package mainimport ("fmt""os"
)func main() {// 文件路径filePath := "example.txt"// 写入文件content := []byte("Hello, world!")err := os.WriteFile(filePath, content, 0644)if err != nil {fmt.Printf("无法写入文件:%v\n", err)return}fmt.Println("文件写入成功")
}

覆盖写:
如果想要覆盖文件中的内容并写入新的数据,可以使用 os.OpenFile 函数以写入模式打开文件,并使用 Write 方法写入数据。这将覆盖文件中的现有内容。

package mainimport ("fmt""os"
)func main() {filePath := "example.txt"file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644)if err != nil {fmt.Printf("无法打开文件:%v\n", err)return}defer file.Close()content := []byte("Hello, world! This is overwritten content.")_, err = file.Write(content)if err != nil {fmt.Printf("无法写入文件:%v\n", err)return}fmt.Println("文件覆盖写入成功")
}

使用 os.OpenFile 函数以写入模式打开文件,并设置了 os.O_TRUNC 标志,它会截断文件并清空其内容。然后,我们使用返回的文件对象的 Write 方法将新的内容写入文件中。

追加写:
如果想要在文件末尾追加新的数据,可以使用 os.OpenFile 函数以追加模式打开文件,并使用 Write 方法写入数据。这将在文件末尾添加新的内容。

package mainimport ("fmt""os"
)func main() {filePath := "example.txt"file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)if err != nil {fmt.Printf("无法打开文件:%v\n", err)return}defer file.Close()content := []byte(" This is appended content.")_, err = file.Write(content)if err != nil {fmt.Printf("无法写入文件:%v\n", err)return}fmt.Println("文件追加写入成功")
}

使用 os.OpenFile 函数以追加模式打开文件,并设置了 os.O_APPEND 标志,它会将新的数据追加到文件末尾。然后,我们使用返回的文件对象的 Write 方法将新的内容追加到文件中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/121261.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构

完全解耦的时间片轮询框架构 简介项目代码timeslice.htimeslice.clist.hlist.c 创建工程移植代码实验函数说明timeslice_task_inittimeslice_task_addtimeslice_tak_deltimeslice_get_task_num 结尾 简介 timeslice是一个时间片轮询框架,他是一个完全解耦的时间片轮…

sift特征提取matlab

SIFT(Scale-Invariant Feature Transform)是一种用于图像处理和计算机视觉中的特征提取方法,它具有尺度不变性和旋转不变性等特点,通常用于图像匹配、物体识别和跟踪等任务。以下是如何在MATLAB中使用SIFT特征提取的一般步骤&…

Docker容器的应用部署

MySQL部署 案例需求: 在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server 实现步骤: 搜索mysql镜像拉取mysql镜像创建容器操作容器中的mysql 相关知识: 容器内的网络服务和外部机器不能直接通信外部机器和宿主…

三十七、【进阶】验证索引的效率

1、准备工作: 创建一张表,该表中有一千万条数据,名为tb_sku; 2、使用主键查询: select * from tb_stu where id1\G; 3、使用非索引查询: 4、给sn字段创建索引: 在创建过程中,发现…

如何使用 nvm-windows 这个工具来管理你电脑上的Node.js版本

nvm-windows 是一个用于管理在 Windows 上安装的多个 Node.js 版本的工具。以下是安装和使用 nvm-windows 的步骤: 第1步:下载 nvm-windows 访问 nvm-windows 的 GitHub发布页面.下载最新版本的 nvm-setup.zip 文件。 第2步:安装 nvm-wind…

JavaScript之while和do while循环的用法

JavaScript之while和do while循环的用法 1、while的用法2、do while的用法 1、while的用法 1)while循环的基本语法: while (condition) { // code to be executed while the condition is true }当条件为真(即condition的结果为true&…

conda虚拟环境笔记收录

1、安装conda 增加执行权限: chmod x Anaconda3-2023.03-1-Linux-x86_64.sh 开始执行:./Anaconda3-2023.03-1-Linux-x86_64.sh2、查看版本 conda --version3、查看当前虚拟环境 虚拟环境和全局环境有前缀可见 如果不进行设置,重新启动就变成…

C语言中的结构体和联合体有什么区别?

文章目录 1. 结构体(Structures)的理论知识详解1.1 C结构体语法1.2 结构体用法案例2. 联合体(Unions)的理论知识详解2.1 C联合体语法2.2 联合体数据大小2.3 C联合体用法案例3. 结构体和联合体的区别和联系3.1 结构体和联合体的区别3.2 结构体和联合体联系4. 实际代码在工作…

MySQL的基础(一)

MySQL的基础(一) SQLSQL的语法特点主要包括以下几点:一、 SQL - DDL -- 数据定义语言1.1 数据库操作1.1 显示现有的数据库1.2 创建数据库1.3 删除数据库1.4 使用 1.2 数据表操作1.2.1 表查询1.2.2 表创建1.2.3 修改表 1.2.4 小结 二、SQL - D…

【Python基础】Python基本数据类型 (新人必备)

Python是一种弱类型语言,因此变量的数据类型可以动态改变。Python基本的数据类型包括以下几种: 整型(int):表示整数,如1、2、3等。浮点数(float):表示带有小数部分的数字…

calcite 校验层总结

1、校验的作用 1)完善语义信息 例如在SQL语句中,如果碰到select * 这样的指令,在SQL的语义当中,“*” 指的是取出对应数据源中所有字段的信息,因此就需要根据元数据信息来展开。 2)结合元数据信息来纠偏…

XTU-OJ 1253-Robot

Robot 题目描述 有N个任务需要Robot去完成,这个N个任务的地点在一个数轴上,坐标为1到n。每个任务需要先完成ai个任务才能开始去做。Robot可以在直线上左右移动,初始位置位于任务1的地点,方向朝向数轴正方向。请问Robot最少转换多少…

特殊类设计[下] --- 单例模式

文章目录 5.只能创建一个对象的类5.1设计模式[2.5 万字详解:23 种设计模式](https://zhuanlan.zhihu.com/p/433152245)5.2单例模式1.饿汉模式1.懒汉模式 6.饿汉模式7.懒汉模式7.1饿汉模式优缺点:7.2懒汉模式1.线程安全问题2.单例对象的析构问题 8.整体代码9.C11后可…

UVa129 Krypton Factor(困难的串)

1、题目 2、题意 如果一个字符串包含两个相邻的重复子串,则称它是“容易的串”,其他串称为“困难的串”。例如,BB、ABCDACABCAB、ABCDABCD都是容易的的串,而D、DC、ABDAB、CBABCBA 都是困难的串。 输入正整数 k k k 和 L L L&a…

K8S基础架构租赁(Lease )

分布式系统通常需要租约(leases),租约提供了锁定共享资源和在一组成员之间协调活动的机制。 在Kubernetes中,租约的概念由协调(k8s.io) API组中的Lease对象表示。 在Kubernetes中,Lease对象用于协调集群中的节点和组件之间的通信和协作。例如…

Linux虚拟机部署与发布项目(Windows版本)

目录 前言 一、虚拟机部署项目的流程 二、单机项目 1. 本机测试 2.虚拟机部署项目 三、前后端分离项目 前言 在软件开发过程中,部署和发布项目是非常重要的一环。使用虚拟机技术可以方便、灵活且可重复使用地部署和发布项目。本篇博客将介绍如何在 Windows 环…

【密评】商用密码应用安全性评估从业人员考核题库(十四)

商用密码应用安全性评估从业人员考核题库(十四) 国密局给的参考题库5000道只是基础题,后续更新完5000还会继续更其他高质量题库,持续学习,共同进步。 3251 单项选择题 根据GB/T 39786《信息安全技术 信息系统密码应用…

Go基础——基础语法

1、简介 Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。语法类似于C,专为高性能和并发程序而设计。通常用于网络编程、云服务器、游戏服务器、DevOps、Web应用、分布式系统、容器虚…

LeetCode--1991.找到数组的中间位置

1 题目描述 给你一个下标从 0 开始的整数数组 nums , 请你找到 最左边 的中间位置 middleIndex (也就是所有可能中间位置下标最小的一个) 中间位置 middleIndex 是满足 nums[0] nums[1] ... nums[middleIndex-1] nums[middleIndex1] nums[middleI…

【知识串联】概率论中的值和量(随机变量/数字特征/参数估计)【考研向】【按概率论学习章节总结】(最大似然估计量和最大似然估计值的区别)

就我的概率论学习经验来看,这两个概念极易混淆,并且极为重点,然而,在概率论的前几章学习中,如果只是计算,对这方面的辨析不清并没有问题。然而,到了后面的参数估计部分,却可能出现问…