Golang--文件操作

1、文件

文件:文件用于保存数据,是数据源的一种

os包下的File结构体封装了对文件的操作(记得包os包)

 

2、File结构体--打开文件和关闭文件

2.1 打开文件

打开文件,用于读取(函数):
传入一个字符串(文件的路径),返回的是文件的指针和是否打开成功error

2.2 关闭文件

关闭文件(方法):
使文件不能用于读写,它返回可能出现的错误

package main
import ("fmt""os"
)func main(){//打开文件file,err := os.Open("D:/Golang_Project/src/GoCode/test1_project/main/t.txt")if err != nil { //出错fmt.Println("文件打开失败")return}else{fmt.Printf("文件内容=%v\n",file) //文件内容=&{0xc0000a66c8}}//关闭文件--调用方法err = file.Close()if err != nil{fmt.Println("关闭失败")}else{fmt.Println("关闭成功")}
}

 

3、读取操作

IO流:用于程序和数据源之间进行沟通
方向:输入和输出(写入程序为输入,程序写出为输出,对应输入流和输出流)

一次性全部读取

读取文件的内容并显示在终端(使用ioutil一次将整个文件读入到内存中),这种方式适用于文件不大的情况。相关方法和函数(ioutil.ReadFile)(包:io/ioutil

package main
import ("fmt""os""io/ioutil"
)func main(){//打开文件file,err := os.Open("D:/Golang_Project/src/GoCode/test1_project/main/t.txt")if err != nil { //出错fmt.Println("文件打开失败")return}else{//其实不需要进行Open和Close,因为ioutil.ReadFile()会自动打开和关闭文件content,errRead := ioutil.ReadFile("D:/Golang_Project/src/GoCode/test1_project/main/t.txt") //返回类型是[]byte和errorif errRead!= nil{fmt.Println("文件读取失败")}else{fmt.Printf("文件内容=%s\n",string(content)) //文件内容=hello world}}//关闭文件--调用方法err = file.Close()if err != nil{fmt.Println("关闭失败")}else{fmt.Println("关闭成功")}
}

带缓冲区的读取

读取文件的内容并显示在终端(带缓冲区的方式--4096字节),适合读取比较大的文件,使用os.Open,file.Close,bufio.NewReader(),reader.ReadString函数和方法

package main
import ("fmt""os""bufio""io"
)func main(){//打开文件:file,err := os.Open("D:/Golang_Project/src/GoCode/test1_project/main/t.txt")//关闭文件--deferdefer file.Close()//判断文件是否打开成功if err!= nil{fmt.Println("文件打开失败")return}else{//创建一个流reader := bufio.NewReader(file)//读取文件for{//循环读取文件str,errRead := reader.ReadString('\n')//以换行符为单位读取文件fmt.Println(str)if errRead == io.EOF{ //io.EOF表示已经读取到文件末尾break}}}
}

4、写入文件 



参数含义:

  1. name:要打开的路径
  2. flag:文件打开模式(可以利用"|"符号进行组合)
  3. perm:权限控制(linux/unix系统下才生效,windows下设置无效)-0666(-rw-rw-rw-)
package main
import ("fmt""os""bufio"
)func main(){//写入文件//打开文件file,err := os.OpenFile("D:/Golang_Project/src/GoCode/test1_project/main/t.txt",os.O_CREATE|os.O_WRONLY,0666)//关闭文件--deferdefer file.Close()//判断文件是否打开成功if err!= nil{fmt.Println("文件打开失败")return}else{//写入文件操作:io流 -> 缓冲输出流(带缓冲区)write := bufio.NewWriter(file)write.WriteString("hello world\n")//刷新缓冲区---> 才会将缓冲区的内容写入到文件中write.Flush()}
}

 

5、文件复制

文件复制 f1 - > f2:

  1. 读取f1文件
  2. 写入f2文件

package main
import ("fmt""io/ioutil"
)func main(){//定义源文件file1Path := "D:/Golang_Project/src/GoCode/test1_project/main/t.txt"//定义目标文件file2Path := "D:/Golang_Project/src/GoCode/test1_project/main/t1.txt"//对文件进行读取:content,err1 := ioutil.ReadFile(file1Path)if err1!= nil{fmt.Println("文件读取失败")return}//对文件进行写入:err2 := ioutil.WriteFile(file2Path,content,0666)if err2!= nil{fmt.Println("文件写入失败")return}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

dcdc3节锂电池串联9-12V升压32V 3A/5A 音响供电恒压芯片 SL4010

SL4010:高效能9-12V至32V升压解决方案,为高端音响系统注入澎湃动力 在追求极致音质与持久续航的音频世界里,SL4010 DC-DC升压转换器以其卓越的性能和可靠性,成为高端音响系统的理想供电伙伴。专为3节锂电池串联(9-12V…

onnx-web + yolov8n 在视频流里做推理

顺着我上一篇文章 使用onnxruntime-web 运行yolov8-nano推理 继续说,有朋友在问能不能接入 视频流动,实时去识别物品。 首先使用 getUserMedia 获取摄像头视频流 getUserMedia API 可以访问设备的摄像头和麦克风。你可以使用这个 API 获取视频流&#…

力扣题库——136.只出现一次的数字

代码实现&#xff1a; class Solution { public:int singleNumber(vector<int>& nums) {int result0;for(int num:nums){result^num;}return result;} }; 结果&#xff1a; 思路&#xff1a;这里让0和数组元素不断异或&#xff0c;因为0与一个数异或的结果是它本身…

EasyPOI使用详解

EasyPOI 简介 easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法 文档&#xff1a;http://easypoi.mydoc.io/#categor…

JAVA设计模式之【建造者模式】

1 定义 建造者模式&#xff08;Builder Pattern&#xff09;使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 2 类图 产品类&#xff08;Product&#xff09;&#xff1a;表示被创建的复杂…

智能化健身房管理:Spring Boot与Vue的创新解决方案

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

如何修改WordPress经典编辑器的默认高度?

boke112百科有一个使用WordPress搭建的小网站&#xff0c;文章内容就是几个字不到一行&#xff0c;但是每次使用经典编辑器编辑文章时&#xff0c;都觉得编辑器默认高度太高了&#xff0c;影响了我添加文章摘要和其他属性&#xff0c;有没有办法修改WordPress经典编辑器的默认高…

C#属性 Property

属性Property不是变量。 它们是由名为访问器方法来实现的一种方法。 实例属性表示的是实例的某个数据&#xff0c;通过这个数据反映实例当前的状态 静态属性表示的是类型的某个数据&#xff0c;通过这个数据反映类型当前的状态 意义&#xff1a; 防止恶意赋值(通过属性间接访问…

【力扣热题100】[Java版] 刷题笔记-121. 买卖股票的最佳时机

题目&#xff1a;121. 买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。…

Wi-Fi7 puncturing技术增强与应用

原文关注公众号 - 无线技术栈,及时查看网络/Wi-Fi更多知识 “本文图片没有一一列出,感兴趣可以关注公众号 - 无线技术栈” “本文图片没有一一列出,感兴趣可以关注公众号 - 无线技术栈” Puncturing是一种有效的编码技术,广泛应用于无线通信中,用于在保持信号的可靠性的同…

C语言内存函数介绍和模拟实现:(memcpy,memmove,memcmp,memset)

memcpy介绍及模拟实现&#xff1a; memcpy介绍&#xff1a; void* 是指可以接受任何类型的指针。 memcpy是把从 source 指针开始之后的 num 个字节的内存拷贝到 destination 指针之后的空间。 遇到‘\0’不会停止&#xff0c;而且memcpy不可以拷贝重叠空间&#xff0c;就是说…

浏览器指纹修改指南2024 - 修改Geolocation API指纹(十一)

引言 在前几篇文章中&#xff0c;我们已经详细探讨了Geolocation API的定义、作用及其在浏览器指纹中的重要性&#xff0c;并深入分析了Chromium源码中Geolocation API的实现位置和修改方法。通过这些分析&#xff0c;我们为后续的修改工作奠定了坚实的基础。 在本篇文章中&a…

【微信小程序】基本语法

一、导入小程序 选择代码目录 项目配置文件 appid 当前小程序的 AppIDprojectname 当前小程序的项目名称 变更AppID&#xff08;视情况而定&#xff0c;如果没有开发权限时需要变更成个人的 AppID&#xff09; 二、模板语法 在页面中渲染数据时所用到的一系列语法叫做模板…

数据结构:顺序表

顺序表 顺序表的概念与结构静态顺序表动态顺序表 动态顺序表的实现SeqList.h的创建初始化动态顺序表&#xff08;LS_Init&#xff09;动态顺序表的销毁&#xff08;LS_Destry&#xff09;检查动态内存空间是否已满&#xff08;SL_CheckCapacity&#xff09;动态顺序表打印有效数…

MySQL_数据类型建表

复习&#xff1a; 我们昨天学习的知识都忘了嘛&#xff1f;如果忘了也不要担心&#xff0c;我来带大家来复习一遍吧&#xff01;&#xff01;&#xff01; 1.查看所有数据库 show databases;2.创建属于自己的数据库 create database 数据库名; 检查自己创建的数据库是…

PHP不良事件上报系统源码,医院安全不良事件管理系统,基于 vue2+element+ laravel框架开发

不良事件上报系统通过 “事前的人员知识培训管理和制度落地促进”、“事中的事件上报和跟进处理”、 以及 “事后的原因分析和工作持续优化”&#xff0c;结合预存上百套已正在使用的模板&#xff0c;帮助医院从对护理事件、药品事件、医疗器械事件、医院感染事件、输血事件、意…

在 Android 手机上从SD 卡恢复数据的 6 个有效应用程序

如果您有 Android 设备&#xff0c;您可能会将个人和专业的重要文件保存在设备的 SD 卡上。这些文件包括照片、视频、文档和各种其他类型的文件。您绝对不想丢失这些文件&#xff0c;但当您的 SD 卡损坏时&#xff0c;数据丢失是不可避免的。 幸运的是&#xff0c;您不需要这样…

实战:看懂并分析执行计划——Nested Loops (Inner Join)

这是执行计划中 Nested Loops 的详情信息,下面将逐行解释每个字段的含义,并提供优化思路。 Nested Loops 分析 Physical Operation: Nested Loops (Inner Join) 物理操作,表示这是一个嵌套循环连接(Nested Loops),用于执行 INNER JOIN。嵌套循环通常用于小数据集的连接…

Meta Llama3用于药物发现的微调、RAG 和提示工程-LLM保姆级资料

Meta Llama3用于药物发现的微调、RAG 和提示工程的使用指南&#xff1a;LLM微调的基本概念&#xff0c;每种微调方式的深入解读&#xff0c;2种生物医药领域的Llama3的微调应用。 LLM 如何微调LLMs&#xff1f;3种微调方式&#xff0c;什么时候&#xff1f;什么情况下该使用何…

如何通过 PXE 使用 UEFI 启动 Tiny Core Linux

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…