go语言day13 io包 文件的读取和写出

Package os - The Go Programming Language (google.cn)

      〇、 io包下的Reader,Writer接口。

                所有读写方法需要实现该接口。



        一、os包下文件的指针类型实现了读写方法。

 

              1)  使用文件实现的Read()

                    创建一个字节切片用来存储读出的字节数据,可以发现每次读取四个字节,

最后一次读取没满四个字节时bs切片会回填最后一次上一次的数据,这个时候正确的操作是使用Read()方法的返回值m,m为每次实际读取的字节数。使用bs切片和m限定真正的读取到的数据。

             2)   使用文件实现的Writer()方法

                文件读Read()方法中和文件资源建立连接的os.Open()方法只指定文件的路径。

 在文件写操作中os.OpenFile()不仅指定了存放数据的文件路径,还提供了文件模式,如果

文件不存在需要创建,文件权限是可写的,每次写入文件都在文件末尾追加而不是从头开始覆盖文件内容。



        io包下还提供了字符串写进文件的WriteString接口

        相应的os包下的file类也实现了字符串写入文件的WriteString()方法。

 



             二、     复制文件的几种方式

                 1)使用os包下文件实现的Read(),Writer()方法。

                 2)io包下提供的Copy()方法

                 3)ioutil包下提供的ReadFile()和WriteFile()

                        该方法是一次性的读取数据和一次性的写出数据,数据过大会内存溢出,不适合大文件。



           io包下的几种复制方法

         io包下除了Copy()方法,还有CopyN()方法,CopyBuffer()方法。

                        底层都调用了copyBuffer(),在不指定缓冲区buf大小时,默认是32个字节。


             三、    seek()方法


           四、   断点续传

                                源文件,临时文件,目标文件。从源文件中读取数据,临时文件去存储更新源文件复制的总字节数count,然后目标文件再去复制源文件中的数据。

                                假如程序运行异常,在下一次程序启动时,从源文件中读取的数据偏移量根据临时文件的count来定。

                                比如从源文件中读取8000个字节,临时文件中存储8000用来代表count,这时程序异常结束,下次复制操作时就根据8000的偏移量从源文件中读取写入到目标文件中,同时更新临时文件的count值。               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值