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

    创建文件并写入内容

    写文件操作应用实例:

    基本介绍:

    func OpenFile(name string, flag int, perm FileMode) (file *File, err error)

    说明:os.OpenFile 是一个更一般性的文件打开函数,它会使用指定的选项(如O_RDONLY等)、指定的模式(如0666等)打开指定名称的文件。如果操作成功,返回的文件对象可用于I/O。如果出错,错误底层类型是*PathError。

    基本应用实例-方式一

    1)创建一个新文件,写入内容5句"hello, Gardon"

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

    func main() {

      //1.打开文件 d:/abc.txt
      filePath := "d:/abc.txt"
      file, err := os.OpenFile(filePath, os.O_WRONLY | os.O_CREATE, 0666)
      if err != nil {
        fmt.Printf("open file err=%v ", err)
        return
      }

      //及时关闭file句柄,防止内存泄露
      defer file.Close()

      //准备写入5句"hello, Gardon"
      str := "hello, Gardon " // 表示换行
      //写入时,使用带缓存的 *Writer
      writer := bufio.NewWriter(file)
      for i := 0; i < 5; i++ {
        writer.WriteString(str)
      }

      //因为writerhi带缓存,因此在调用WriterString方法时
      //内容是先写入到缓存的。所以需要调用Flush方法,将缓存的数据
      //真正写入到文件中,否则文件中会没有数据。
      writer.Flush()
    }

    写入文件的四种方式

    2)打开一个存在的文件中,将原来的内容覆盖成新的内容10句 "你好,尚硅谷!"

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

    func main() {

      //1.打开一个已经存在的文件 d:/abc.txt
      filePath := "d:/abc.txt"
      file, err := os.OpenFile(filePath, os.O_WRONLY | os.O_TRUNC, 0666)
      if err != nil {
        fmt.Printf("open file err=%v ", err)
        return
      }

      //及时关闭file句柄,防止内存泄露
      defer file.Close()

      str := "你好,尚硅谷! " // 表示换行, 也表示换行。有些编辑器认 有些认
      //写入时,使用带缓存的 *Writer
      writer := bufio.NewWriter(file)
      for i := 0; i < 10; i++ {
        writer.WriteString(str)
      }

      //因为writerhi带缓存,因此在调用WriterString方法时
      //内容是先写入到缓存的。所以需要调用Flush方法,将缓存的数据
      //真正写入到文件中,否则文件中会没有数据。
      writer.Flush()
    }

    3)打开一个存在的文件,在原来的内容追加内容 'ABC! ENGLISH!'

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

    func main() {

      //1.打开一个已经存在的文件 d:/abc.txt
      filePath := "d:/abc.txt"
      file, err := os.OpenFile(filePath, os.O_WRONLY | os.O_APPEND, 0666)
      if err != nil {
        fmt.Printf("open file err=%v ", err)
        return
      }

      //及时关闭file句柄,防止内存泄露
      defer file.Close()

      str := "ABC! ENGLISH! " // 表示换行
      //写入时,使用带缓存的 *Writer
      writer := bufio.NewWriter(file)
      for i := 0; i < 10; i++ {
        writer.WriteString(str)
      }
      writer.Flush()
    }

    4)打开一个存在的文件,将原来的内容读出显示在终端,并且追加5句"hello,北京!"

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

    func main() {

      //1.打开一个已经存在的文件 d:/abc.txt
      filePath := "d:/abc.txt"
      file, err := os.OpenFile(filePath, os.O_RDWR | os.O_APPEND, 0666)
      if err != nil {
        fmt.Printf("open file err=%v ", err)
        return
      }

      //及时关闭file句柄,防止内存泄露
      defer file.Close()

      //先读取原来文件的内容,并显示在终端
      reader := bufio.NewReader(file)
      for {
        str, err := reader.ReadString(' ')
        if err == io.EOF {
          break
        }
        //显示到终端
        fmt.Print(str)
      }

      str := "hello,北京! " // 表示换行
      //写入时,使用带缓存的 *Writer
      writer := bufio.NewWriter(file)
      for i := 0; i < 5; i++ {
        writer.WriteString(str)
      }
      //因为writerhi带缓存,因此在调用WriterString方法时
      //内容是先写入到缓存的。所以需要调用Flush方法,将缓存的数据
      //真正写入到文件中,否则文件中会没有数据。
      writer.Flush()
    }

    使用os.OpenFile(), bufio.NewWriter(), *Writer的方法WriteString完成上面的任务。

  • 相关阅读:
    zfs
    targetcli
    targetcli
    自动制linux iso包
    yum解决重复包,依赖冲突问题
    lvm相关
    vmware相关
    配置本地yum源
    k8s安装prometheus监控
    流水线基础-Pipeline
  • 原文地址:https://www.cnblogs.com/green-frog-2019/p/11552102.html
Copyright © 2011-2022 走看看