menu arrow_back 湛蓝安全空间 |狂野湛蓝,暴躁每天 chevron_right All_wiki chevron_right the-way-to-go_ZH_CN chevron_right eBook chevron_right 18.7.md
  • home 首页
  • brightness_4 暗黑模式
  • cloud
    xLIYhHS7e34ez7Ma
    cloud
    湛蓝安全
    code
    Github
    18.7.md
    1.17 KB / 2024-07-16 23:14:29
        # 18.7 文件
    
    (1)如何打开一个文件并读取:
    
    ```go    
    file, err := os.Open("input.dat")
      if err != nil {
        fmt.Printf("An error occurred on opening the inputfile\n" +
          "Does the file exist?\n" +
          "Have you got acces to it?\n")
        return
      }
      defer file.Close()
      iReader := bufio.NewReader(file)
      for {
        str, err := iReader.ReadString('\n')
        if err != nil {
          return // error or EOF
        }
        fmt.Printf("The input was: %s", str)
      }
    ```
    
    (2)如何通过切片读写文件:
    ```go
    func cat(f *file.File) {
      const NBUF = 512
      var buf [NBUF]byte
      for {
        switch nr, er := f.Read(buf[:]); true {
        case nr < 0:
          fmt.Fprintf(os.Stderr, "cat: error reading from %s: %s\n",
            f.String(), er.String())
          os.Exit(1)
        case nr == 0: // EOF
          return
        case nr > 0:
          if nw, ew := file.Stdout.Write(buf[0:nr]); nw != nr {
            fmt.Fprintf(os.Stderr, "cat: error writing from %s: %s\n",
              f.String(), ew.String())
          }
        }
      }
    }
    ```
    
    ## 链接
    
    - [目录](directory.md)
    - 上一节:[函数](18.6.md)
    - 下一节:[协程 (goroutine) 与通道 (channel)](18.8.md)
    
    
    links
    file_download