zoukankan      html  css  js  c++  java
  • go语言之文件操作

    一: 相关的API

    1func Create(name string) (file *File, err Error)
      根据提供的文件名创建新的文件,返回一个文件对象,默认权限是0666
    2 func NewFile(fd uintptr, name string) *File
     根据文件描述符创建相应的文件,返回一个文件对象
    3 func Open(name string) (file *File, err Error)
      只读方式打开一个名称为name的文件
    4 func OpenFile(name string, flag int, perm uint32) (file *File, err Error)
      打开名称为name的文件,flag是打开的方式,只读、读写等,perm是权限
    5 func (file *File) Write(b []byte) (n int, err Error)
      写入byte类型的信息到文件
    6 func (file *File) WriteAt(b []byte, off int64) (n int, err Error)
      在指定位置开始写入byte类型的信息
    7 func (file *File) WriteString(s string) (ret int, err Error)
      写入string信息到文件
    8 func (file *File) Read(b []byte) (n int, err Error)
      读取数据到b中
    9 func (file *File) ReadAt(b []byte, off int64) (n int, err Error)
      从off开始读取数据到b中
    10 func Remove(name string) Error
      删除文件名为name的文件

    二: 写文件

    package main
    
    import (
       "os"
       "fmt"
    )
    
    func main() {
       //新建文件
       file, err := os.Create("./xxx.txt")
       if err != nil {
          fmt.Println(err)
          return
       }
       defer file.Close()
       //写入内容
       for i := 0; i < 5; i++ {
          //写入信息
          file.WriteString("ab
    ")
          file.Write([]byte("cd
    "))
       }
    }

    三:读文件

    package main
    
    import (
       "os"
       "fmt"
    )
    
    func main() {
       //打开文件
       file, err := os.Open("./xxx.txt")
       if err != nil {
          fmt.Println(err)
       }
       defer file.Close()
       buf := make([]byte, 1024)
       for {
          //读文件
          n, _ := file.Read(buf)
          if n == 0 {
             break
          }
          fmt.Println(string(buf))
       }
    }

    四:拷贝文件

    package main
    
    import (
       "os"
       "fmt"
       "io"
    )
    
    func main() {
       //打开文件
       srcFile, err := os.Open("./xxx.txt")
       if err != nil {
          fmt.Println(err)
          return
       }
       //创建目标文件
       dstFile, err2 := os.Create("./yyy.txt")
       if err2 != nil {
          fmt.Println(err2)
          return
       }
       //切片缓冲区
       buf := make([]byte, 1024)
       for {
          //从源文件读
          n, err := srcFile.Read(buf)
          //Read()若无法得到更多的结果,就返回EOF
          if err != nil && err != io.EOF {
             fmt.Println(err)
             break
          }
          if n == 0 {
             fmt.Println("文件处理完毕")
             break
          }
          //读到的内容写入目标文件
          dstFile.Write(buf[:n])
       }
       srcFile.Close()
       dstFile.Close()
    }
  • 相关阅读:
    LeetCode Flatten Binary Tree to Linked List
    LeetCode Longest Common Prefix
    LeetCode Trapping Rain Water
    LeetCode Add Binary
    LeetCode Subsets
    LeetCode Palindrome Number
    LeetCode Count and Say
    LeetCode Valid Parentheses
    LeetCode Length of Last Word
    LeetCode Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/liucsxiaoxiaobai/p/10835664.html
Copyright © 2011-2022 走看看