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

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包下也有对应字符串写入文件的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值。               

相关推荐

  1. go语言读取toml文件

    2024-07-15 04:12:02       55 阅读
  2. Go 语言 Viper 库来读取 YAML 配置文件

    2024-07-15 04:12:02       30 阅读
  3. go语言打印变量类型

    2024-07-15 04:12:02       21 阅读
  4. nodejs中有哪些读取文件函数例子

    2024-07-15 04:12:02       52 阅读
  5. Go 读取文件

    2024-07-15 04:12:02       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 04:12:02       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 04:12:02       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 04:12:02       57 阅读
  4. Python语言-面向对象

    2024-07-15 04:12:02       68 阅读

热门阅读

  1. Django模板语言(简略教程)

    2024-07-15 04:12:02       24 阅读
  2. std::async和std::future异步编程

    2024-07-15 04:12:02       22 阅读
  3. C++智能指针

    2024-07-15 04:12:02       19 阅读
  4. Python面试题:如何在 Python 中进行单元测试?

    2024-07-15 04:12:02       24 阅读
  5. git使用

    2024-07-15 04:12:02       20 阅读
  6. 哪个外汇平台可以交易美股?

    2024-07-15 04:12:02       19 阅读
  7. ubuntu disk

    2024-07-15 04:12:02       15 阅读
  8. 数据结构与算法基础篇--递归

    2024-07-15 04:12:02       20 阅读
  9. 来看一个14台480KW的充电站实际收入情况

    2024-07-15 04:12:02       19 阅读
  10. dify/api/models/workflow.py文件中的数据表

    2024-07-15 04:12:02       21 阅读