go语言基础 -- 文件操作

基础的文件操作方法

go里面的文件操作封装在os包里面的File结构体中,要用的时候最好去查下官方文档,这里介绍下基本的文件操作。

  1. 打开关闭文件
import("os"
)
func main() {// Open返回*File指针,后续的操作都通过*File对象操作file, err := os.Open("/home/lzs/tmp.txt")if err != nil {// ...}err = file.Close()if err != nil {// ...}
}
  1. 带缓冲读取文件 – bufio包的reader方法
import("fmt""os"
)
func main() {// Open返回*File指针,后续的操作都通过*File对象操作file, err := os.Open("/home/lzs/tmp.txt")if err != nil {// ...}// reader默认缓冲区大小为4096reader := bufio.NewReader(file)for {// 读取到\n就结束这次读取str, err := reader.ReadString('\n')if err == io.EOF {break}fmt.Print(str)}defer file.Close()
}
  1. 一次性读取文件 – ioutil包的相关函数方法
    文件不大时推荐使用ioutil包的函数一次性读取文件
    使用ioutil下的ReadFile函数可一次性读取文件,无需显式地打开关闭文件。
import("fmt""io/ioutil"
)func main() {file := "/home/test/file.txt"content_slice, err := ioutil.ReadFile(file)if err != nil {// ...}fmt.Printf("read file ok")
}
  1. 创建及写文件
    这里我们会用到os包里面的OpenFile函数,name是文件名,flag是打开模式,perm是权限设置
    在这里插入图片描述
    flag的取值有以下这些
    在这里插入图片描述
    perm的取值和linux权限控制一样,r是4,w是2,x是1,如果对所有用户和组都开放,那么就是0777
import("fmt""os""bufio"
)
func main() {filepath := "./test.txt"file, err := os.OpenFile(filepath, os.O_WRONLY | os.O_CREATE, 0666)if err != nil {fmt.Printf("open file error:%v", err)return}defer file.Close()str := "test write"// 使用缓冲写writer := bufio.NewWriter(file)// 注意,这一步只是写到缓冲区,除非缓冲区满,不然不会写入硬盘writer.WriteString(str)// 落盘writer.Flush()
}
  1. 判断文件是否存在
    go中使用os.Stat()判断文件或文件夹是否存在
  • 如果返回的错误为nil,则存在
  • 如果返回错误值使用os.IsNotExist()判断为true,则不存在
  • 其他返回类型不确定
  1. 文件拷贝
    使用io包的Copy()
    在这里插入图片描述
    这个函数的参数需要使用bufio包的方法来创建writer和reader。

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

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

相关文章

VUE学习第三篇----VUE实例

1、当一个 Vue 实例被创建时&#xff0c;它将 data 对象中的所有的 property 加入到 Vue 的响应式系统中。当这些 property 的值发生改变时&#xff0c;视图将会产生“响应”&#xff0c;即匹配更新为新的值。 html网页文件如下所示&#xff1a; <html> <head> &…

SpringCloudAlibaba 网关gateway整合sentinel日志默认路径修改

SpringCloudAlibaba 网关gateway整合sentinel 实现网关限流熔断 问题提出 今天运维突然告诉我 在服务器上内存满了 原因是nacos日志高达3G,然后将日志文件发给我看了一下之后才发现是gateway整合sentinel使用了默认日志地址导致日志生成地址直接存在与根路径下而且一下存在多…

论文学习——基于注意力预测策略的动态多目标优化合作差分进化论

论文题目&#xff1a;Cooperative Differential Evolution With an Attention-Based Prediction Strategy for Dynamic Multiobjective Optimization 基于注意力预测策略的动态多目标优化合作差分进化论&#xff08;Xiao-Fang Liu , Member, IEEE, Jun Zhang, Fellow, IEEE, a…

【大厂AI课学习笔记NO.74】人工智能产业技术架构

包括基础层、技术层和应用层。 人工智能的产业技术架构是一个多层次、多维度的复杂系统&#xff0c;它涵盖了从基础硬件和软件设施到高级算法和应用技术的全过程。这个架构通常可以分为三个主要层次&#xff1a;基础层、技术层和应用层。下面我将详细论述这三个层次及其细分内…

rancher是什么

Rancher Labs是制作Rancher的公司。Rancher Labs成立于2014年&#xff0c;是一家专注于企业级容器管理软件的公司。它的产品设计旨在简化在分布式环境中部署和管理容器的过程&#xff0c;帮助企业轻松地采用容器技术和Kubernetes。Rancher Labs提供的Rancher平台支持Docker容器…

pip 和conda 更换镜像源介绍

1、前言 很多深度学习的项目免不了安装库文件、配置环境等等&#xff0c;如果利用官方提供的连接&#xff0c;网速很慢&#xff0c;而且很容易download掉。 所以配置好了虚拟环境&#xff0c;将pip换源属实重要 常见的国内镜像源有清华、中科大、阿里等等... 这里建议用中科…

NIFI从Oracle11G同步数据到Mysql_亲测可用_解决数据重复_数据跟源表不一致的问题---大数据之Nifi工作笔记0065

首先来看一下整体的流程: 可以看到了用到了上面的这些处理器,然后我们主要看看,这里之前 同步的时候,总是出现重复的数据,奇怪. 比如源表中只有166条数据,但是同步过去以后变成了11万条数据了. ${db.table.name:equals(table1):or(${db.table.name:equals(table2)})} 可以看…

【小黑送书—第十二期】>>一本书讲透Elasticsearch:原理、进阶与工程实践(文末送书)

Elasticsearch 是一种强大的搜索和分析引擎&#xff0c;被广泛用于各种应用中&#xff0c;以其强大的全文搜索能力而著称。 不过&#xff0c;在日常管理 Elasticsearch 时&#xff0c;我们经常需要对索引进行保护&#xff0c;以防止数据被意外修改或删除&#xff0c;特别是在进…

5款好用的AI办公软件,一键轻松制作PPT、视频,提升工作效率!

众所周知&#xff0c;AI 人工智能技术已渗透到生活的方方面面&#xff0c;无论是很多人早已用上的智能音箱、语音助手&#xff0c;还是新近诞生的各种 AI 软件工具&#xff0c;背后都离不开 AI 人工智能技术的加持。 对于各类新生的 AI 软件工具&#xff0c;人们很容易「选边站…

100. Same tree 一个击败了100%C++用户的代码

题目描述 Given the roots of two binary trees p and q, write a function to check if they are the same or not. Two binary trees are considered the same if they are structurally identical, and the nodes have the same value. Example 1: Input: p [1,2,3], q…

【网络】数据在同网段和跨网段通信流程

情景一&#xff1a;同一广播域内&#xff0c;两台主机通信过程&#xff1a; 当NO要和N1通信时&#xff0c;假如N0知道N1的IP但却不知道它的MAC地址&#xff0c;那NO就会发送一个ARP的广播请求<1>&#xff08;里面源IP是NO 目标IP是N1 源MAC是N0 目标MAC是12个F&#xff0…

H62410Y 惠海 降压恒压芯片 仪表供电芯片 24V36V100V降3.3V5V1A

降压恒压仪表供电芯片的工作原理如下&#xff1a; 输入电压传感器&#xff1a;感知电源电压的大小&#xff0c;以便后续控制电压输出。 储能元件&#xff1a;内部有储能元件&#xff08;如电容器或电感等&#xff09;&#xff0c;用于存储电荷或电能&#xff0c;以供后续转换…