zoukankan      html  css  js  c++  java
  • 文件操作1

    文件,对我们并不陌生,文件是数据源(保存数据的地方)的一种,比如大家经常使用的Word文档,txt文件,excel文件...都是文件。文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保存视频,声音...


    文件在程序中是以流的形式来操作的。

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

    输入流:数据从数据源(文件)到程序(内存)的路径

    输出流:数据从程序(内存)到数据源(文件)的路径

    os.File封装所有文件相关操作,File是一个结构体。

    os.File的各种绑定的方法在 官网的os包里的File结构体里。

    操作文件,会经常使用到os.File结构体

    打开和关闭文件:

    常用的文件操作函数和方法:

    1)打开一个文件进行读操作:
    os.Open(name string) (*File, error)

    2)关闭一个文件:
    File.Close()

    案例演示:

    func main() {

      //打开文件
      //概念说明:file的叫法有三种:
      //1.file 叫 file对象
      //2.file 叫 文件句柄
      //3.file 叫 file指针
      file, err := os.Open("d:/hosts")
      if err != nil {
        fmt.Println("open file err=", err)
      }

      //输出下文件,看看文件是什么,看出file 就是一个指针 *file
      fmt.Printf("file=%v", file)

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

    带缓冲的Reader读文件:

    读文件操作应用实例:

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

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

     unc main() {

      //打开文件
      //概念说明:file的叫法有三种:
      //1.file 叫 file对象
      //2.file 叫 文件句柄
      //3.file 叫 file指针
      file, err := os.Open("d:/hosts")
      if err != nil {
        fmt.Println("open file err=", err)
      }

      //当函数退出时,要及时的关闭file
      defer file.Close() //要及时关闭file句柄,否则会有内存泄露

      //创建一个 *Reader,是带缓冲的
      /*
      const (
        defaultBufSize = 4096 //默认的缓冲区为4096
      )
      */
      reader := bufio.NewReader(file)
      //循环的读取文件的内容
      for {
        str, err := reader.ReadString(' ') //读到一个换行就结束
        if err == io.EOF { //io.EOF表示文件的末尾
          break
        }
        //输出内容
        fmt.Print(str)
      }

      fmt.Println("文件读取结束...")
    }

    一次性读取文件: 

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

    案例演示:

    package main
    import (
      "fmt"
      "io/ioutil"
    )

    func main() {

      //使用ioutil.ReadFile一次性将文件读取到位
      file := "d:/hosts"
      content, err := ioutil.ReadFile(file)
      if err != nil {
        fmt.Printf("read file err=%v", err)
      }
      //把读取到的内容显示到终端
      fmt.Printf("%v",string(content))
      //因为我们没有明确的显示的Open文件,因此也不需要显示的Close文件
      //因为,文件的Open和Close被封装到 ReadFile 函数内部
    }

  • 相关阅读:
    变量的创建和初始化
    HDU 1114 Piggy-Bank (dp)
    HDU 1421 搬寝室 (dp)
    HDU 2059 龟兔赛跑 (dp)
    HDU 2571 命运 (dp)
    HDU 1574 RP问题 (dp)
    HDU 2577 How to Type (字符串处理)
    HDU 1422 重温世界杯 (dp)
    HDU 2191 珍惜现在,感恩生活 (dp)
    HH实习 acm算法部 1689
  • 原文地址:https://www.cnblogs.com/green-frog-2019/p/11415579.html
Copyright © 2011-2022 走看看