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

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

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

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

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

    读文件方式:

      1.带缓冲区的方式,os.Open, file.Close, bufio.NewReader(), reader.ReadString函数和方法:

      

    func main() {
        file, err := os.Open("b.txt")
        if err != nil {
            fmt.Println("open file err=", err)
        }
    
        defer file.Close()
    
        reader := bufio.NewReader(file)
        for {
            str, err := reader.ReadString('
    ')
            fmt.Print(str)
            if err == io.EOF {
                break
            }
        }
    }

       2.使用ioutil一次将整个文件读入到内存中,这种方式适用于文件不大的情况。 相关的方法和函数(ioutil.ReadFile):

     

    func main() {
        content, err := ioutil.ReadFile("b.txt")
        if err != nil {
            fmt.Println("reard file err=", err)
        }
        fmt.Printf("%v", string(content))
    }

      

    写文件方式:

      1.使用缓存bufio.NewWriter()

    func main() {
        file, err := os.OpenFile("a.txt", os.O_WRONLY | os.O_CREATE, 0666)
        if err != nil {
            fmt.Println("open file err=", err)
            return
        }
    
        defer file.Close()
        str := "hello world
    "
        writer := bufio.NewWriter(file)
        for i := 0; i < 5; i++ {
            writer.WriteString(str)
        }
        writer.Flush()
    }

      2.从一个文件读取内容后写入到另一个文件:ioutil.WriteFile,   ioutil.ReadFile

    func main() {
        data, err := ioutil.ReadFile("a.txt")
        if err != nil {
            fmt.Println("read file is err=", err)
            return
        }
    
        err = ioutil.WriteFile("b.txt", data, 0666)
        if err != nil {
            fmt.Println("read file is err=", err)
        }
    }

     

    判断文件是否存在

    golang判断文件或文件夹是否存在的方法为使用os.Stat()函数返回的错误值进行判断:

      1)如果返回的错误为nil,说明文件或文件夹存在;

      2)如果返回的错误类型使用os.IsNotExits()判断为true,说明文件或文件夹不存在;

      3)如果返回的错误为其它类型,则不确定是否存在

    func PathExits(path string) (bool, error) {
        _, err := os.Stat(path)
        if err == nil {
            return true, nil
        }
        if os.IsNotExist(err) {
            return false, nil
        }
        return false, err
    }
    人生就是要不断折腾
  • 相关阅读:
    【案例】图片上传
    BOM相关知识点
    【案例】图片无缝轮播效果
    DOM相关知识点
    【案例】雪花飘落效果
    DOM节点克隆
    DOM节点的创建、插入、删除
    【案例】列表全选、全不选、反选
    AJAX相关概念及应用
    解决跨域问题
  • 原文地址:https://www.cnblogs.com/xiangxiaolin/p/12219512.html
Copyright © 2011-2022 走看看