• 文件操作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完成上面的任务。

  • 相关阅读:
    spring全家桶的pom的基本配置
    springboot项目中的普通Session和使用redis存储session
    Springboot项目修改html后不需要重启---springboot项目的热部署
    springboot的异步调用
    最近5年183个Java面试问题列表及答案[最全]
    SpringBoot 之Spring Boot Starter依赖包及作用
    最近玩了下linux下的lampp注意一些使用
    关于dumper和mysqldump的
    python入门-python处理csv文件格式相关
    好久没玩docker了,温下手
  • 原文地址:https://www.cnblogs.com/green-frog-2019/p/11552102.html
Copyright © 2020-2023  润新知