Go语言(3)IO操作

作者: ms2018 | 来源:发表于2018-09-10 15:55 被阅读0次

    Go语言(3)IO操作

    创建文件夹

    package main
    
    import "os"
    
    func main() {
    
        // 创建文件夹
        os.Mkdir("1", 777)
        
    
    }
    

    删除文件夹

    package main
    
    import "os"
    
    func main() {
    
        //删除文件夹
        os.Remove("1")
    
    }
    

    检查文件是否存在

    package main
    
    import (
        "fmt"
        "os"
    )
    
    /**
        检查文件是否存在
     */
    func FileExists(path string) (bool, error) {
        _, err := os.Stat(path)
        if err == nil {
            return true, nil
        }
        if os.IsNotExist(err) {
            return false, nil
        }
        return false, err
    }
    
    func main() {
    
        f, _ := FileExists("1.txt")
        fmt.Println(f)
        
    }
    

    创建文件

    package main
    
    import "os"
    
    func main() {
        os.Create("2.txt")
    }
    

    文件写入(io.WriteString)

    package main
    
    import (
        "io"
        "os"
    )
    
    func main() {
    
        file, _ := os.OpenFile("2.txt", os.O_APPEND, 0777)
        io.WriteString(file, "hello")
    }
    

    文件写入(ioutil.WriteFile)

    package main
    
    import (
        "io/ioutil"
    )
    
    func main() {
        
        ioutil.WriteFile("3.txt", []byte("hello"), 0666)
    }
    

    文件写入(File)

    package main
    
    import (
        "os"
    )
    
    func main() {
        f, _ := os.Create("4.txt")
        defer f.Close()
        f.Write([]byte("hello"))
        f.WriteString("world")
        f.Sync()
    }
    

    文件写入(bufio.NewWriter)

    package main
    
    import (
        "bufio"
        "os"
    )
    
    func main() {
        os.Create("5.txt")
        f, _ := os.OpenFile("5.txt", os.O_APPEND, 0777)
        w := bufio.NewWriter(f)
        w.WriteString("hello")
        w.Flush()
        f.Close()
    }
    

    删除文件

    package main
    
    import (
        "os"
    )
    
    func main() {
        os.Remove("5.txt")
    }
    

    文件重命名

    package main
    
    import "os"
    
    func main() {
    
        os.Rename("1.jpg", "2.jpg")
    }
    

    文件拷贝

    package main
    
    import (
        "io"
        "os"
    )
    
    // 文件拷贝
    // 目标文件
    // 原文件
    func CopyFile(dstName, srcName string) (written int64, err error) {
        src, err := os.Open(srcName)
        if err != nil {
            return
        }
        defer src.Close()
        dst, err := os.OpenFile(dstName, os.O_WRONLY|os.O_CREATE, 0644)
        if err != nil {
            return
        }
        defer dst.Close()
        return io.Copy(dst, src)
    }
    
    func main() {
        CopyFile("5.txt", "4.txt") // os.Args[1]为目标文件,os.Args[2]为源文件
    }
    

    文件切割

    package main
    
    import (
        "math"
        "os"
        "strconv"
    )
    
    const CHUNKSIZE int64 = 1024 * 64
    
    func main() {
    
        // 获取文件的信息
        fileInfo, _ := os.Stat("xingkong.jpg")
        //计算每一个区块的大小
        num := int(math.Ceil(float64(fileInfo.Size()) / float64(CHUNKSIZE)))
        //打开文件
        fi, _ := os.OpenFile("xingkong.jpg", os.O_RDONLY, os.ModePerm)
        //
        b := make([]byte, CHUNKSIZE)
        //
        var i int64 = 1
        //
        for ; i <= int64(num); i++ {
            //移动指针
            fi.Seek((i-1)*(CHUNKSIZE), 0)
    
            if len(b) > int((fileInfo.Size() - (i-1)*CHUNKSIZE)) {
                //分配内存
                b = make([]byte, fileInfo.Size()-(i-1)*CHUNKSIZE)
            }
    
            //
            fi.Read(b)
            // 创建块的文件
            f, _ := os.OpenFile(strconv.Itoa(int(i))+".db", os.O_CREATE|os.O_WRONLY, os.ModePerm)
            //写入块文件
            f.Write(b)
            //关闭文件
            f.Close()
        }
    
    }
    

    文件合并

    package main
    
    import (
        "fmt"
        "io/ioutil"
        "os"
        "strconv"
    )
    
    func main() {
    
        fii, _ := os.OpenFile("1.jpg", os.O_CREATE|os.O_WRONLY|os.O_APPEND, os.ModePerm)
    
        for i := 1; i <= 85; i++ {
            f, err := os.OpenFile(strconv.Itoa(int(i))+".db", os.O_RDONLY, os.ModePerm)
            if err != nil {
                fmt.Println(err)
                return
            }
            b, _ := ioutil.ReadAll(f)
            fii.Write(b)
            f.Close()
        }
    
    }
    

    相关文章

      网友评论

        本文标题:Go语言(3)IO操作

        本文链接:https://www.haomeiwen.com/subject/zcbsgftx.html