• golang-os文件操作


    golang-os文件操作

    package main
    
    import (
        "fmt"
        "os"
    )
    
    //func main() {
    //    f,err :=os.Create("/home/landv/testOne.txt")
    //    if err != nil {
    //        fmt.Println("create err:",err)
    //        return
    //    }
    //    defer f.Close()
    //    fmt.Println("successful")
    //}
    //func main() {
    //    f,err :=os.Open("/home/landv/testOne.txt") //以只读方式打开
    //    if err != nil {
    //        fmt.Println("create err:",err)
    //        return
    //    }
    //    defer f.Close()
    //    _, err = f.WriteString("这是一个One测试文件#######")
    //    if err != nil {
    //        fmt.Println("WriteString err:",err)
    //        return
    //    }
    //    fmt.Println("successful")
    //}
    func main() {
        f,err :=os.OpenFile("/home/landv/testOne.txt",os.O_RDWR,6)
        if err != nil {
            fmt.Println("create err:",err)
            return
        }else {
    
            content :="这是要追加的内容
    "
            n,_ :=f.Seek(0,2)
            _,err =f.WriteAt([]byte(content),n)
        }
        defer f.Close()
    
    
        //_, err = f.WriteString("这是一个One测试文件#######")
        //
        //if err != nil {
        //    fmt.Println("WriteString err:",err)
        //    return
        //}
    
        fmt.Println("successful")
    }

     添加O_APPEND就可以追加内容了

    f, err := os.OpenFile(fileName, os.O_WRONLY|os.O_APPEND, 0666)
    n,_ :=f.Seek(io.SeekStart,io.SeekEnd)
    //使用常量好理解,当然你可以直接写(0,2)

    文件读操作

    package main
    
    import (
        "bufio"
        "fmt"
        "io"
        "os"
    )
    
    func main() {
        //_,err :=os.Create("D:/gotest/aaa.txt")
        f,err :=os.OpenFile("D:/gotest/aaa.txt",os.O_RDWR,6)
        if err   != nil{
            fmt.Println("OpenFile err:",err)
            return
        }
        defer f.Close()
        fmt.Println("Suceessful")
        //_, _ = f.WriteString("############
    ")
    
        reader  := bufio.NewReader(f)
    
        for {
            buf, err := reader.ReadBytes('
    ')
            if err != nil && err==io.EOF{
                fmt.Println("文件读取完毕")
                return
            }else if err != nil {
                fmt.Println("err:", err)
            }
            fmt.Println(string(buf))
        }
    }

     文件拷贝

    package main
    
    import (
        "fmt"
        "io"
        "os"
    )
    
    func main() {
        //打开读文件
        f_r,err :=os.Open("/home/landv/testOne.txt")
        if err != nil {
            fmt.Println("Open err:",err)
            return
        }
        defer f_r.Close()
        //打开写文件
        f_w,err :=os.Create("/home/landv/1.txt")
        if err != nil {
            fmt.Println("Create err:",err)
            return
        }
        defer f_w.Close()
    
        //从文件中读取数据,放到缓冲区中
        buf := make([]byte, 4096)
        //循环从读文件中,获取数据,原封不动的写到另一个文件中
        for {
    
    
            n, err := f_r.Read(buf)
            if err != nil && err == io.EOF {
                fmt.Printf("读完了;n=%d
    ", n)
                return
            }
            _, _ = f_w.Write(buf[:n]) //读多少,写多少
    
        }
    }

     目录操作

    package main
    
    import (
        "fmt"
        "os"
    )
    
    func main() {
    
        fmt.Println("请输入都要查询的目录:")
        var path string
        _, _ = fmt.Scan(&path)
    
        f, err := os.OpenFile(path, os.O_RDONLY, os.ModeDir)
        if err != nil {
            fmt.Println("err:", err)
        }
        defer f.Close()
    
        //读取目录项
        info, err := f.Readdir(-1)//-1 读取目录中所有的目录项
        //变量返回的切片
        for _, fileInfo := range info{
            if fileInfo.IsDir(){
                fmt.Println(fileInfo.Name(),"是一个目录")
                fmt.Println("时间是:",fileInfo.ModTime())
            }else {
                fmt.Println(fileInfo.Name(),"是一个文件")
            }
        }
    }
  • 相关阅读:
    PAT 1037. 在霍格沃茨找零钱(20)
    PAT 1036. 跟奥巴马一起编程(15)
    Topcoder SRM633 DIV2 解题报告
    HDU 4565 So Easy! 矩阵快速幂 + 共轭数
    HDU 2256 Problem of Precision 矩阵快速幂 + 共轭数
    FZU 1683 纪念SlingShot 矩阵快速幂
    CodeForces 185A Plant 矩阵快速幂
    HDU 2604 Queuing 矩阵快速幂
    HDU 1575 Tr A 矩阵快速幂
    HDU 1757 A Simple Math Problem 矩阵快速幂
  • 原文地址:https://www.cnblogs.com/landv/p/11097031.html
Copyright © 2020-2023  润新知