go – 文件操作(1)读与写

​ 众所周知,文件是数据源(数据保存的地方),常见类型的文件大家其实都不陌生

​ 很显然文件是以流的形式来操作的

//流:数据在文件和程序之间经历的路径//输入流:数据从文件到程序的路径//输出流:数据从程序到文件的路径

在打开和关闭文件,我们一般使用os模块下的函数,直接贴一段官方函数解释

一般是使用Open来调用一个文件,但是OpenFile可以制定一些参数

const (O_RDONLY int = syscall.O_RDONLY // 只读模式打开文件O_WRONLY int = syscall.O_WRONLY // 只写模式打开文件O_RDWR   int = syscall.O_RDWR   // 读写模式打开文件O_APPEND int = syscall.O_APPEND // 写操作时将数据附加到文件尾部O_CREATE int = syscall.O_CREAT  // 如果不存在将创建一个新文件O_EXCL   int = syscall.O_EXCL   // 和O_CREATE配合使用,文件必须不存在O_SYNC   int = syscall.O_SYNC   // 打开文件用于同步I/OO_TRUNC  int = syscall.O_TRUNC  // 如果可能,打开时清空文件,也就是将文件覆盖
)

比如说flag就可以指定这一些,之后我们会举例的

关于读的操作

读的操作分为一次性读取和缓冲式读取

首先来介绍一下一次性读取,一次性读取并不需要os模块下的open,而是直接通过string读取文件的名字,并且返回一个[]byte类型,很显然这种方式并不适合大文件的读取,十分的占空间

package main
import ("fmt""io/ioutil"
)
func main(){file := "./test.txt"  //读取当前目录下的一个文件content,err := ioutil.ReadFile(file)if err !=nil{fmt.Println("\n文件读取结束")}fmt.Printf("%v",string(content))}

接下来介绍一下缓冲式读取文件

缓冲式读取需要通过bufio这一个模块

package main
import ("fmt""os""bufio""io"
)
//---------------------------缓冲读取------------------------
func main(){file , err  := os.Open("test.txt")if err != nil{fmt.Println("open file err=",err)}defer file.Close()  //当函数退出时,要及时的关闭file,否则会有内存泄漏//创建一个 *Reader ,是带有缓冲的/*const(defaultBufSize = 4096  //默认缓冲区为4096 )这种方式一般用于读取大文件,分多次提取*/reader := bufio.NewReader(file)//循环的读取文件的内容for {str,err := reader.ReadString('\n')fmt.Print(str)if err == io.EOF{  //io.EOF表示文件的末尾fmt.Println("\n文件读取结束...")break}}
}

关于写的操作

写的操作如果是也是缓冲类型的话,那么同样也是需要先os来调用打开文件,指定写的权限操作,然后使用bufio模块进行写

const (O_RDONLY int = syscall.O_RDONLY // 只读模式打开文件O_WRONLY int = syscall.O_WRONLY // 只写模式打开文件O_RDWR   int = syscall.O_RDWR   // 读写模式打开文件O_APPEND int = syscall.O_APPEND // 写操作时将数据附加到文件尾部O_CREATE int = syscall.O_CREAT  // 如果不存在将创建一个新文件O_EXCL   int = syscall.O_EXCL   // 和O_CREATE配合使用,文件必须不存在O_SYNC   int = syscall.O_SYNC   // 打开文件用于同步I/OO_TRUNC  int = syscall.O_TRUNC  // 如果可能,打开时清空文件,也就是将文件覆盖
)
package main
import("fmt""bufio""os"
)
func main(){f_path := "./abc.txt"file,err := os.OpenFile(f_path, os.O_WRONLY|os.O_CREATE, 0666) //这一类的参数查看官方文档,windows下0666没反应 if err != nil{fmt.Printf("open file err=%v\n",err)return}defer file.Close()str := "hello,duan\n" //在某些版本过低的系统,换行需要添加\r这样的符号来识别\n     str := "hello,duan\r\n" ,至少在win10就不用添加这个write := bufio.NewWriter(file)  //写入的时候其实是具有一个缓存的,需要使用一个Flush方法来将缓冲的数据真正写入文件,否则会丢失for i:=0;i<5;i++{write.WriteString(str)}write.Flush()  //注意的是写了之后一定一定要Flush一下
}
er(file)  //写入的时候其实是具有一个缓存的,需要使用一个Flush方法来将缓冲的数据真正写入文件,否则会丢失for i:=0;i<5;i++{write.WriteString(str)}write.Flush()  //注意的是写了之后一定一定要Flush一下
}

go -- 文件操作(1)读与写相关推荐

  1. python中文件读写位置的作用-文件操作,读,写,指定位置

    [python]代码库#文件操作 open() #open("路径 + 文件名","读写模式") f=open('filepath','w') #读写模式: # ...

  2. 集合、深浅拷贝、文件操作(读、写、追加)函数初识(参数)

    小数据池 #int ==比较数值 is 比较内存地址 id 测试内存地址 #str 不能含有特俗字符 单个元素*数字,不能超过21 i1 = 'a'*20 i = 'a'*20 id一样 i1 = ' ...

  3. Python中文件操作(读、写、关闭)

    目录 一.什么是文件 二.python文件操作 1.open()打开函数 注意 mode常用的三种基础访问模式 2.读操作相关方法 read()方法: readlines()方法: readline( ...

  4. java 边读边写文件_文件操作--边读边写,在指定位置添加内容(避免乱码)

    [java]代码库/** * @param lineNumber 选择要添加内容的行数 * @param attribute1 选择要添加的内容1 * @param attribute2 选择要添加的 ...

  5. 对已有文件进行既读又写的操作时关于文件位置注意事项(适用于Python和C/C++)

    当我们需要对现有文件进行读取数据并修改文件中的数据时,就需要用到对已有文件进行既读又写的操作.有多种可读且可写的文件打开方式:r+,w+,a+,rb+,wb+,ab+,具体含义见下表. 打开 方式 读 ...

  6. Python open()函数文件打开、读、写操作详解

    python的文件读写和打开操作都有自己特定的函数和方法,操作起来很简单.下面就来简单的了解下python文件的基本操作方法有哪些. 一.Python open()函数文件打开操作 打开文件会用到op ...

  7. C++之文件操作探究(三):写文件——二进制文件

    相关博文:C++之文件操作探究(一):写文件--文本文件 相关博文:C++之文件操作探究(二):读文件--文本文件 相关博文:C++之文件操作探究(三):写文件--二进制文件 相关博文:C++之文件操 ...

  8. C++之文件操作探究(一):写文件——文本文件

    相关博文:C++之文件操作探究(一):写文件--文本文件 相关博文:C++之文件操作探究(二):读文件--文本文件 相关博文:C++之文件操作探究(三):写文件--二进制文件 相关博文:C++之文件操 ...

  9. jxl操作(读、写)Excel例子 http://www.360doc.com/content/11/0422/14/6728052_111517688.shtml

      首 页 阅览室 馆友 我的图书馆 登录 注册 jxl操作(读.写)Excel例子 收藏人:澈丹 2011-04-22 | 阅:  转:  |  分享  |     来源     jxl不错,简单易 ...

  10. matlab读int16读文件_Matlab文件操作及读txt文件(fopen,fseek,fread,fclose)

    Matlab 文件操作及读 txt 文件 (fopen,fseek,fread,fclose) matlab 文件操作 文件操作是一种重要的输入输出方式,即从数据文件读取数据或将 结果写入数据文件. ...

最新文章

  1. ASP.NET MVC 3拥抱动态类型,徐汇区网站设计
  2. spark streaming 消费 kafka入门采坑解决过程
  3. STM32串口中断的4种接收数据的实现方式
  4. 【每周CV论文推荐】 初学深度学习人脸关键点检测必读文章
  5. 31.CSS3变形效果【下】
  6. 在Spark Scala/Java应用中调用Python脚本,会么?
  7. python清除缓存的命令_python怎么删除缓存文件
  8. linux c 串口可读可写,串口编程可写入不能读取 怎么解决
  9. Protobuf的C++使用笔记
  10. java形状函数_java基础:10.4 Java FX之形状
  11. 机器学习--k均值聚类(K-means)
  12. 问你觉得iOS7为什么要扁平化,扁平化和之前的比有什么优势
  13. AUTOCAD——圆弧命令
  14. bada开发tips
  15. Python 进阶视频课 - 12. Nelson-Siegel 构建债券收益率曲线
  16. 介绍几个ddos产品厂家
  17. 什么是云计算,云计算是什么意思
  18. java线程报时代码_什么?一个核同时执行两个线程?
  19. Go语言 linux下开发 IDE -SpaceVim\NeoVim
  20. 基于codesys开发的多轴运动控制程序框架,将逻辑与运动控制分离,将单轴控制封装成功能块,对该功能块的操作包含了所有的单轴控制

热门文章

  1. 擦窗机器人毕业设计_自动擦窗机器人系统设计
  2. JS对象数组去重简单有效方法
  3. Java简单编程题:大小写转换、兔子生兔子问题、狼追兔子问题、判断英文句子。
  4. R语言-第十章输入输出
  5. 精益生产管理如何在企业落地?
  6. node.js+express实现简单的增删改查
  7. 深圳有哪些IT互联网大厂(2020年版)
  8. python tornado部署_tornado 部署
  9. 滴滴-Platform Safety amp; Governanc
  10. Python封装MySQL数据库操作(pymysql)