610-Golang的读写文件

读写文件的全部数据

包:"io"
聚集了大量的和输入输出相关的操作,和文件有关系
在这里插入图片描述
WriteFile(“文件的路径”, 内容, 选项)
在这里插入图片描述
我们看下面这个例子
在这里插入图片描述

在这里插入图片描述
因为我们现在要写入文件,没有人规定这个文件只能装文本,它找我们要的是byte数组
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
执行成功
在这里插入图片描述
为什么我的权限是可以写的?我明明设置成只读的啊?
权限在window上是不起作用的,在linux上起作用的

在这里插入图片描述

在这里插入图片描述
现在咱们能写入文件了,接下来我们进行读文件

ioutil.WriteFile(路径, 内容, 权限)

ioutil.ReadFile(路径) ---返回值:data和error 
data是byte数组 error反映是否成功

在这里插入图片描述
在这里插入图片描述
输出的是dfadfasdf的每个字符对应的ascii值
在这里插入图片描述
不过我们想把它们变成字符串
在这里插入图片描述

在这里插入图片描述
nil代表的是没有错误
我们可以写的更完美一些:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

读写文件的其中一部分

使用的包是“os"
所有的系统调用都和这个包有关系,可以用它来获取系统的信息,创建进程,创建文件的引用
在这里插入图片描述
打开文件

//默认是以读取方式打开
os.Open(文件路径)//返回值:f: err:

//读取、追加、写入、读写
os.OpenFile(文件路径, 标志, 权限)

在这里插入图片描述

在这里插入图片描述
f是文件句柄,就是资源标识符,是一个数字,以后对这个文件进行的所有操作都以这个数字作为依据,会去找这个数字对应的资源去操作。

//可以根据我们的需求读写东西
file.Read()//返回值:n:实际读到的字节数,err:读取操作是否成功
file.Write()//返回值: n:实际写入的字节数 err:写入操作是否成功

因为磁盘是按照簇来划分的,一个簇(就是一个小格子)的大小就是4096字节
在这里插入图片描述
一个簇是4096字节,如果我们的文件大小是5000字节,相当于把第一个簇占满了,第二个簇用了其中一部分,后面的空间空着,但是也只能空着,因为一个簇只能存放同一个文件的数据信息
在这里插入图片描述
为什么平时压缩文件可以大幅度降低空间大小?它就是把这些文件压实了,就没有簇的概念了,都挤着待着

我们现在设置:一次读取4096个字节:
在这里插入图片描述

在这里插入图片描述
读到了9个字节
我们把读到的东西打印出来:
在这里插入图片描述

在这里插入图片描述
后面全是0,因为文件就9个字节,后面的空间没有用上
我们转成字符串输出:
在这里插入图片描述

在这里插入图片描述

所有可用的文件标志

可以同时存在多个标志
在这里插入图片描述
代码示例:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
为什么write执行后结果咋没有变化?
write也有返回值,和read一样,我们来看看是什么原因
在这里插入图片描述
在这里插入图片描述
因为访问被禁止了
因为open默认是以只读方式打开

只写标志的应用场景:操作日志,只往里写,日志里的内容不想读,普通程序只能写日志,不能读日志
在这里插入图片描述
正常情况,默认的写入文件是以覆盖的方式:
我们先看看1.txt的原有的内容:
在这里插入图片描述

然后把111写入这个文件

在这里插入图片描述

在这里插入图片描述
没问题,写入了3个东西
在这里插入图片描述
我们现在打开1.txt看看
在这里插入图片描述
写入文件,默认是指向首位置,覆盖的方式
在这里插入图片描述
如果我们加上这个标志位:
在这里插入图片描述
就是把文件指针移到了末尾位置,以追加的方式写入文件
在这里插入图片描述
在这里插入图片描述
我们现在再执行一下:
在这里插入图片描述
在这里插入图片描述
我们再次打开1.txt
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在我们已经有2.txt了。我们执行下面代码:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对写入有效,对读无效。
在写入的时候把原有的内容清空,然后再写。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林林林ZEYU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值