Golang文件操作详解

打开和关闭文件

从 Go 1.16 开始,现在提供了相同的功能 通过包 IO 或包操作系统,以及这些实现 应该在新代码中首选。 有关详细信息,请参阅特定函数文档。

弃用了"io/ioutil"对文件的操作

读取文件方法一(os.open+file.read只读形式):

os.Open() 函数能够打开一个文件,返回一个 *File 和一个 err
操作完成文件对象以后一定要记得关闭文件(使用defer延迟执行函数)
注意这个是只读的形式,如果要修改文本内容不能用这个方式
func (f *File) Read(b []byte) (n int, err error)

 它接收一个字节切片,返回读取的字节数和可能的具体错误,读到文件末尾时会返回 0 和 io.EOF

一、读取文件(方法1)1、只读方式打开文件 file,err := os.Open()2、读取文件 file.Read()3、关闭文件流 defer file.Close()

打开文件的操作,获取到了文件的地址

func main(){fileInfo,err := os.Open("./main.go")//延迟关闭文件,避免内存泄漏defer fileInfo.Close()//判断一下文件是否打开if err != nil {fmt.Println(err)return}//操作文件fmt.Println(fileInfo) //打印出一个地址&{0xc00010c780}
}

读取文件内容

//有绝对路径以及相对路径
func main(){file,err := os.Open("./main.go")//延迟关闭文件,避免内存泄漏defer file.Close()//判断一下文件是否打开if err != nil {fmt.Println(err)return}//操作文件// fmt.Println(fileInfo) //打印出一个地址&{0xc00010c780}//定义一个byte类型的切片,可以缓存数据var strSlice []bytevar HuanChun = make([]byte, 256) //表示一次可以读取的数据流为256,然后定制循环流方式读取for{fileInfo,err := file.Read(HuanChun)if err

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

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

相关文章

LeetCode 面试题 01.03. URL化

文章目录 一、题目二、C# 题解 一、题目 URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现&…

clickhouse扩缩容

一、背景 我们之前已经学会了搭建clickhouse集群,我们搭建的是一套单分片两副本的集群,接下来我们来测试下clickhouse的扩缩容情况 二、扩容 扩容相对来说比较简单,我们原来的架构如下 hostshardreplica192.169.1.111192.169.1.212 现在…

学习笔记整理-JS-几种创建对象的方式

文章目录 一、几种创建对象的方式 一、几种创建对象的方式 // 1. 字面量模式 const userA {name: JonA,age: 18 }// 2. Object 构造函数模式 const userB new Object({name: JonB,age: 19 })// 3. 自定义构造函数模式 function UserC() {this.name JonC,this.age 20 } con…

指定或降低Rust 工具链的版本

要更改 Rust 工具链的版本,您可以使用以下命令之一: rustup default stable:使用 stable 版本的 Rust 工具链作为默认版本。rustup default beta:使用 beta 版本的 Rust 工具链作为默认版本。rustup default nightly:使…

WSL2 Ubuntu子系统安装cuda+cudnn+torch

文章目录 前言一、安装cudn二、安装cudnn三、安装pytorch 前言 确保Windows系统版本高于windows10 21H2或Windows11,然后在Windows中将显卡驱动升级到最新即可,WSL2已支持对显卡的直接调用。 一、安装cudn 进入英伟达官网中的cuda下载地址&#xff1…

ansible剧本之role角色模块

role角色 一:Roles 模块1.roles 的目录结构:2.roles 内各目录含义解释3.在一个 playbook 中使用 roles 的步骤:(1)创建以 roles 命名的目录(2)创建全局变量目录(可选)&am…

MAC QT开发攻略

文章目录 基础步骤安装QT、QTCreator安装CMakeNinja 安装Clion编译器在QTCreator中新建项目更改CMake生成器 导入Clion CMake生成文件 基础步骤 安装QT、QTCreator 安装CMake 由于clion需要使用cmake构建 Ninja Ninja下载 安装Clion编译器 Clion 2023.1.3 破解版安装教程…

AI项目二:基于mediapipe的虚拟鼠标控制

若该文为原创文章,转载请注明原文出处。 一、项目介绍 由于博主太懒,mediapipe如何实现鼠标控制的原理直接忽略,最初的想法是想控制摄像头识别手指控制鼠标,达到播放电影的效果。基本上效果也是可以的。简单的说是使用mediapipe检…

UVa247 Calling Circles(Floyd warshall算法)

题意 给定两个人相互打电话,如果a打给b,b打给c,c打给a,则说a,b,c在同一电话圈中。给出n个人的m次通话,输出所有的电话圈 思路 用graph[u][v]1表示u和v之间有打电话。在使用floyd算法计算所有的点对之间的值。graph[u][v]1表示u,v之间有直接…

《TCP IP网络编程》第十八章

第 18 章 多线程服务器端的实现 18.1 理解线程的概念 线程背景: 第 10 章介绍了多进程服务端的实现方法。多进程模型与 select 和 epoll 相比的确有自身的优点,但同时也有问题。如前所述,创建(复制)进程的工作本身会…

Go 1.21新增的 slices 包详解(一)

Go 1.21新增的 slices 包提供了很多和切片相关的函数,可以用于任何类型的切片。 slices.BinarySearch 定义如下: func BinarySearch[S ~[]E, E cmp.Ordered](x S, target E) (int, bool) 在已经排好序的切片(切片必须按递增顺序排序&…

“深入解析JVM:揭秘Java虚拟机的工作原理“

标题:深入解析JVM:揭秘Java虚拟机的工作原理 摘要:本文将深入解析Java虚拟机(JVM)的工作原理,探讨其内部结构和运行机制。我们将介绍JVM的组成部分、类加载过程、内存管理、垃圾回收、即时编译等关键概念&…

Redis专题-秒杀

Redis专题-并发/秒杀 开局一张图,内容全靠“编”。 昨天晚上在群友里看到有人在讨论库存并发的问题,看到这里我就决定写一篇关于redis秒杀的文章。 1、理论部分 我们看看一般我们库存是怎么出问题的 其实redis提供了两种解决方案:加锁和原子操…

k8s 常见面试题

前段时间在这个视频中分享了 https://github.com/bregman-arie/devops-exercises 这个知识仓库。 这次继续分享里面的内容,本次主要以 k8s 相关的问题为主。 k8s 是什么,为什么企业选择使用它 k8s 是一个开源应用,给用户提供了管理、部署、扩…

C++笔记之左值与右值、右值引用

C笔记之左值与右值、右值引用 code review! 文章目录 C笔记之左值与右值、右值引用1.左值与右值2.右值引用——关于int&& r 10;3.右值引用——对比int&& r 10;和int& r 10;4.右值引用(rvalue reference)的概念 1.左值与右值 2.…

Kubernetes(K8s)从入门到精通系列之十七:minikube启动K8s dashboard

Kubernetes K8s从入门到精通系列之十七:minikube启动K8s dashboard 一、安装minikube的详细步骤二、查看Pod三、启动dashboard四、创建代理访问dashboard五、远程访问dashboard一、安装minikube的详细步骤 Kubernetes(K8s)从入门到精通系列之十六:linux服务器安装minikube的详…

Spark MLlib机器学习库(一)决策树和随机森林案例详解

Spark MLlib机器学习库(一)决策树和随机森林案例详解 1 决策树预测森林植被 1.1 Covtype数据集 数据集的下载地址: https://www.kaggle.com/datasets/uciml/forest-cover-type-dataset 该数据集记录了美国科罗拉多州不同地块的森林植被类型,每个样本…

2021年12月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:统计指定范围里的数 给定一个数的序列S,以及一个区间[L, R], 求序列中介于该区间的数的个数,即序列中大于等于L且小于等于R的数的个数。 时间限制:1000 内存限制:65536 输入 第一行1个整数n、,分别表示序列的长度。(0 < n ≤ 10000) 第二行n个正整数,表示序列里…

Qt 编译使用Bit7z库接口调用7z.dll、7-Zip.dll解压压缩常用Zip、ISO9660、Wim、Esd、7z等格式文件(一)

bit7z一个c静态库&#xff0c;为7-zip共享库提供了一个干净简单的接口 使用CMAKE重新编译github上的bit7z库&#xff0c;用来解压/预览iso9660&#xff0c;WIm&#xff0c;Zip,Rar等常用的压缩文件格式。z-zip库支持大多数压缩文件格式 导读 编译bit7z(C版本)使用mscv 2017编译…

如何在机器学习中实现分类?

机器学习和统计学中的分类是一种监督学习方法,其中计算机程序从给定的数据中学习并进行新的观察或分类。在本文中,我们将详细了解机器学习中的分类。 本博客涵盖以下主题: 目录 什么是机器学习中的分类? 机器学习中的分类术语 分类算法