zoukankan      html  css  js  c++  java
  • Go基础---->go的基础学习(五)

      这里是go中关于io的一些知识。有时不是你装得天衣无缝,而是我愿意陪你演得完美无缺。

     go中关于io的使用

    一、Reader中的Read方法

    Read 用数据填充指定的字节 slice,并且返回填充的字节数和错误信息。 在遇到数据流结尾时,返回 io.EOF 错误。

    package main
    
    import (
        "fmt"
        "io"
        "strings"
    )
    
    func main() {
        r := strings.NewReader("Hello, My name is huhx!")
        b := make([]byte, 16)
        for {
            n, err := r.Read(b)
            fmt.Printf("n = %v err = %v b = %v
    ", n, err, b)
            fmt.Printf("b[:n] = %q
    ", b[:n])
            if err == io.EOF {
                break
            }
        }
    }

     运行的结果如下:

    n = 16 err = <nil> b = [72 101 108 108 111 44 32 77 121 32 110 97 109 101 32 105]
    b[:n] = "Hello, My name i"
    n = 7 err = <nil> b = [115 32 104 117 104 120 33 77 121 32 110 97 109 101 32 105]
    b[:n] = "s huhx!"
    n = 0 err = EOF b = [115 32 104 117 104 120 33 77 121 32 110 97 109 101 32 105]
    b[:n] = ""

    二、go中的写入文件

    package main 
    
    import (
        "fmt"
        "os"
    )
    
    func main() {
        userFile := "huhx.txt"
        fout, err := os.Create(userFile)
        defer fout.Close()
        if err != nil {
            fmt.Println(userFile, err)
            return
        }
        for i := 0; i < 10; i++ {
            fout.WriteString("I love you, huhx.
    ")
            fout.Write([]byte("My name is huhx!
    "))
        }
    }

    生成的目录结构:

     三、go中的读取文件

    package main 
    
    import (
        "fmt"
        "os"
    )
    
    func main() {
        userFile := "huhx.txt"
        fl, err := os.Open(userFile)
        defer fl.Close()
        if err != nil {
            fmt.Println(userFile, err)
            return
        }
        buf := make([]byte, 1024)
        for {
            n, _ := fl.Read(buf)
            if 0 == n {
                break
            }
            os.Stdout.Write(buf[:n])
        }
    }

     运行的结果如下:

    I love you, huhx.
    My name is huhx!
    I love you, huhx.
    My name is huhx!
    I love you, huhx.
    My name is huhx!
    I love you, huhx.
    My name is huhx!
    I love you, huhx.
    My name is huhx!
    I love you, huhx.
    My name is huhx!
    I love you, huhx.
    My name is huhx!
    I love you, huhx.
    My name is huhx!
    I love you, huhx.
    My name is huhx!
    I love you, huhx.
    My name is huhx!

     四、go中删除文件

    package main 
    
    import (
        "fmt"
        "os"
    )
    
    func main() {
        err := os.Remove("huhx.txt")
        if err != nil {
            fmt.Println("file remove Error!")
            fmt.Printf("%s", err)
        } else {
            fmt.Println("file remove OK!")
        }
    }

    第一次删除时:

    file remove OK!

    第二次删除时(文件已经成功删除):

    file remove Error!
    remove huhx.txt: The system cannot find the file specified.

    五、目录的创建以及删除

    package main
    
    import (
        "fmt"
        "os"
    )
    func main() {
        os.Mkdir("astaxie", 0777)
        os.MkdirAll("astaxie/test1/test2", 0777)
        err := os.Remove("astaxie")
        if err != nil {
            fmt.Println(err) // remove astaxie: The directory is not empty.
        }
        os.RemoveAll("astaxie")
    }
    • func Remove(name string) error

    删除名称为name 的目录,当目录下有文件或者其他目录是会出错

    • func RemoveAll(path string) error

    根据path删除多级子目录,如果 path是单个名称,那么该目录不删除。

    友情链接

  • 相关阅读:
    【转】C#中的虚方法
    【转】ASP.NET 2.0中Page事件的执行顺序
    OWC ChartSpace控件的使用
    Ext对基本类型的扩展
    OWC PivotTable的使用方法
    .net中线程同步的典型场景和问题(1)
    python中使用汉字
    如何取消后台线程的执行
    yaffs2根文件系统的构建过程
    Fuck self.delegate = self
  • 原文地址:https://www.cnblogs.com/huhx/p/baseusego5.html
Copyright © 2011-2022 走看看