40-Golang中的文件

news2024/10/5 17:25:52

Golang中的文件

    • 基本介绍
    • 文件的打开和关闭
      • 读文件操作应用实例
      • 写文件操作实例
      • 判断文件是否存在

基本介绍

文件在程序中是以流的形式存在的

在这里插入图片描述

流:数据在数据源(文件)和程序(内存)之间经历的路程

输入流:数据从数据源到程序之间的路径

输出流:数据从程序到数据流之间的路径

文件的打开和关闭

package main

import (
	"fmt"
	"os"
)

func main() {
	//打开文件
	//file的叫法
	//file对象
	//file指针
	//file文件句柄
	file, err := os.Open("D:/1.txt")
	if err != nil {
		fmt.Println("open file err=", err)
	}

	//输出下面文件,看看文件是什么
	fmt.Printf("file=%v", file)

	//关闭文件
	err = file.Close()
	if err != nil {
		fmt.Println("close file err=", err)
	}
}
//file=&{0xc00010a780}

读文件操作应用实例

1.读取文件的内容并显示在终端(带缓冲区的方式),使用os.Open, file.Close,bufio.NewReader(),reader.ReadString函数和方法

package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
)

func main() {
	file, err := os.Open("D:/1.txt")
	if err != nil {
		fmt.Println("open file err=", err)
	}
	//当函数退出时,要及时的关闭file
	defer file.Close() //要及时关闭file句柄,否则会有内存泄露

	reader := bufio.NewReader(file)
	//循环读取文件的内容
	for {
		str, err := reader.ReadString('\n') //读到换行就结束
		if err == io.EOF {                  //io.EOF表示文件的末尾
			break
		}
		//输出内容
		fmt.Printf(str)
	}
	fmt.Println("文件读取结束")
}

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

package main

import (
	"fmt"
	"io/ioutil"
)

func main() {
	//使用ioutil.ReadFile一次性将文件读取到位
	file := "d:/1.txt"
	content, err := ioutil.ReadFile(file)
	if err != nil {
		fmt.Printf("read file err=%v", err)
	}
	//把读取到的内容显示到终端
	fmt.Printf("%v", string(content)) //[byte
	//因为,我们没有显式open文件,一次也不粗腰显式close文件
	//因为文件的open和close被封装到readfile函数内部
}

写文件操作实例

func OpenFile(name string, flag int, perm FileMode) (file *File, err error)

说明:os.OpenFile是一个更一般性的文件打开函数,它会使用指定的选项(如 O_RDONLY),指定的模式打开指定名称的文件。如果操作成功,返回文件的对象I/O。如果出错,错误底层类型是*PathError
在这里插入图片描述

package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	//创建一个新文件,写入内容
	//打开文件 d:/2.txt
	filePath := "d:/2.txt"
	file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE, 0666)
	if err != nil {
		fmt.Printf("open file err=%v\n", err)
		return
	}
	//准备写入5句 “hello wing”
	str := "hello wing"
	//写入时,使用带缓存的*Writer
	writer := bufio.NewWriter(file)
	for i := 0; i < 5; i++ {
		writer.WriteString(str)
	}
	//因为writer是带缓存的,因此在调用writerstring方法时,
	//其实是内容先写入缓存的,所以需要调用Flush方法
	//将缓存的数据真正写入到文件中,否则文件中没有数据
	writer.Flush()
}

判断文件是否存在

golang判断文件或文件夹是否存在的方法为使用os.Stat()函数返回的错误值进行判断:

1.如果返回的错误为nil,说明文件或文件夹存在

2.如果返回的错误类型使用os.isNotExist()判断为true,说明文件或文件夹不存在

3.如果返回的错误为其他类型,则不确定是否存在
在这里插入图片描述

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

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

相关文章

【C++知识点】多态

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;C/C知识点 &#x1f4e3;专栏定位&#xff1a;整理一下 C 相关的知识点&#xff0c;供大家学习参考~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;…

Java与Winform进行AES加解密数据传输的工具类与对应关系和示例

场景 AndroidJava中使用Aes对称加密的工具类与使用&#xff1a; AndroidJava中使用Aes对称加密的工具类与使用_霸道流氓气质的博客-CSDN博客 上面讲的Java与安卓进行数据传输时使用AES加解密的示例工具类。 如果Java需要与其他第三方平台比如Winform程序进行数据传递时也需…

一文吃透前端低代码的 “神仙生活”

今天来说说前端低代码有多幸福&#xff1f; 低代码是啥&#xff1f;顾名思义少写代码…… 这种情况下带来的幸福有&#xff1a;代码写得少&#xff0c;bug也就越少&#xff08;所谓“少做少错”&#xff09;&#xff0c;因此开发环节的两大支柱性工作“赶需求”和“修bug”就…

智能氮气柜相对于传统氮气柜的优点分析

智能氮气柜是利用氮气置换柜内湿气从而进行除湿&#xff0c;氮气经过流量计&#xff0c;进入智能氮气控制盒&#xff0c;氮气没有氧气和水分&#xff0c;与潮湿气体的比重不同&#xff0c;进入柜内排掉湿气降湿。智能氮气柜在传统氮气柜的基础上加上了智能控制系统&#xff0c;…

从传统数据库痛点看分布式数据库选型问题

本文转载自&#xff1a;OceanBase 社区 作者简介&#xff1a;蔡鹏&#xff0c;拥有十多年DBA工作经历&#xff0c;曾就职于饿了么、蚂蚁集团&#xff0c;现任货拉拉数据库部门负责人&#xff0c;负责数据库、缓存&#xff0c;消息队列的管理与平台研发工作。 引言 近年来&…

反诈老陈自曝2022年收入133万

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 反诈老陈自曝2022年收入133万&#xff0c;“缴税近40万&#xff0c;捐赠84万”&#xff0c;曾称网络上得到的收入分文不取。老陈自曝引起了广泛热议。 100万的打赏让老陈离职做直播 相较于普通人…

统计学基础:置信区间和p值知识

引言小伙伴们&#xff0c;今天我们要来聊聊置信区间和p值这两个看起来超级相关的概念。咱们先来说说置信区间&#xff0c;它是一种区间估计&#xff0c;相当于给你的样本数据画了一个“框框”&#xff0c;告诉你总体数据的真实值很可能在这个框框里。就好像你买了一个锅&#x…

CS:GO头号特训添加bot + CS:GO控制台指令大全

CS:GO头号特训添加bot CS:GO控制台指令大全 我是艾西&#xff0c;在我们玩csgo时总是会有一些自己的下想法以及想和小伙伴们一起玩的快乐&#xff0c;今天我跟大家简单的说一下头号特训 头号特训模式下单人或多人跑图的相关指令&#xff0c;帮助玩家熟悉头号特训的玩法、特殊道…

写作利器之Markdown编辑套装

简述 作为一名习惯使用Markdown写作的重度用户&#xff0c;并且经常有发布文章需求的作者来说&#xff0c;一套完善的写作发布套装就显得的很重要了。 所以就有了以下的使用体验&#xff0c;本文大概能解决的问题&#xff1a; 1.由于网络问题或编辑器原因部分网站粘贴后的mar…

Docker【基本使用】

1&#xff1a;启动Docker1.1&#xff1a;操作systemctl start docker.service1.2&#xff1a;常见问题【第一步】启动docker&#xff0c;提示启动失败&#xff0c;查询运行状态systemctl start docker.service【第二步】查询docker运行状态&#xff0c;提示不支持SELinux【第三…

大数据flink框架入门分享(起源与发展、实时与离线计算、场景、处理流程、相关概念、特性普及、入门Demo)

文章目录起源与发展flink在github上的现状实时计算VS离线计算实时计算离线计算实时计算常用的场景框架流处理流程flink电商场景下的业务图示例flink中一些重要特性有界数据和无界数据时间语义、水位线事件时间处理时间水位线flink窗口概念理想中的数据处理含有延迟数据的数据处…

基于BP神经网络的手部动作分类识别,BP神经网络详细原理

目标 背影 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数&#xff0c; BP神经网络的传递函数 数据 神经网络参数 基于BP神经网络手部动作识别的MATLAB代码 效果图 结果分析 展望 背影 随着人工智能的发展&#xff0c;智…

深入剖析 MVC 模式与三层架构

文章目录1. 前言2. MVC模式3. 三层架构4. MVC和三层架构5. 总结5.1 IDEA 小技巧1. 前言 前面我们探讨了 JSP 的使用&#xff0c;随着计算机技术的不断更新迭代&#xff0c;JSP 的技术由于存在很多的缺点&#xff0c;已经逐渐退出了历史的舞台&#xff0c;所以在学习时&#xf…

加密功能实现

文章目录1. 前言2. 密码加密1. 前言 本文 主要实现 对密码进行加密 &#xff0c;因为 使用 md5 容易被穷举 (彩虹表) 而破解 &#xff0c;使用 spring security 框架又太大了 (杀鸡用牛刀) 。   所以本文 就自己实现一个密码加密 . 2. 密码加密 这里我们通过 加盐是方式 来 对…

pytorch安装的超级详细教程(没有之一)

一、发展历程 &#xff08;简单介绍&#xff09; (15年)caffe --> (16年)tensorflow1.x --> (17年)keras --> (18年)Tensorflow2.x --> (19年)pytorch。 面向gihub开源项目编程。 向下支持比较好&#xff0c;各个版本之间支持比较好&#xff0c;兼容性强。 版本…

Android事件拦截(3)——系统拦截和应用拦截

本文主要分析触摸事件和按键事件在不同阶段被拦截的流程&#xff0c;总结在不同阶段不同方法中返回值的含义。 按键的拦截 &#xff08;1&#xff09;interceptKeyBeforeQueueing interceptKeyBeforeQueueing方法的意义就是在事件入队列前拦截按键事件&#xff0c;也就是如果…

想找工作,这一篇15w字数+的文章帮你解决

文章目录前言一 专业技能1. 熟悉GoLang语言1.1 Slice1.2 Map1.3 Channel1.4 Goroutine1.5 GMP调度1.6 垃圾回收机制1.7 其他知识点2. 掌握Web框架Gin和微服务框架Micro2.1 Gin框架2.2 Micro框架2.3 Viper2.4 Swagger2.5 Zap2.6 JWT3. 熟悉使用 MySQL 数据库3.1 索引3.2 事务3.3…

每日学术速递3.6

Subjects: cs.CV 1.Multi-Source Soft Pseudo-Label Learning with Domain Similarity-based Weighting for Semantic Segmentation 标题&#xff1a;用于语义分割的基于域相似性加权的多源软伪标签学习 作者&#xff1a;Shigemichi Matsuzaki, Hiroaki Masuzawa, Jun Miura …

2022掉队的“蔚小理”,按下了兔年加速键

配图来自Canva可画 进入2023年&#xff0c;各大车企又展开了新一轮的“竞速”。尽管1月份汽车整体销量出现了“阴跌”&#xff0c;但从各路车企发布的销量目标来看&#xff0c;车企对于2023依旧保持着较高的信心和预期。在一众车企中&#xff0c;以“蔚小理”为代表的新势力们…

基于quartz实现定时任务管理系统

基于quartz实现定时任务管理系统 背景 说起定时任务框架&#xff0c;首先想到的是Quartz。这是定时任务的老牌框架了&#xff0c;它的优缺点都很明显。借助PowerJob 的readme文档的内容简单带过一下这部分。 除了上面提到&#xff0c;还有elastic-job-lite、quartzui也是相当…