Golang的 文件操作 - 前端笔记-Golang的文件操作没什么好说的 就是通过 ioutil 这个包打开文件 通过 bufio 操作文件流 packagemain import&nbs...

学习笔记

点滴记忆
回忆过往
首页>> web后端 >>Golang的 文件操作 - 前端笔记
2021-8-31
分类: web后端

Golang的 文件操作

文章作者:痴迷

Golang的文件操作没什么好说的 就是通过 ioutil 这个包打开文件  通过 bufio 操作文件流  package main ......

Golang的文件操作没什么好说的

就是通过 ioutil 这个包打开文件  通过 bufio 操作文件流 


package main

import (
    "bufio"
    "fmt"
    "io"
    ioutil "io/ioutil"
    "os"
    "path/filepath"
)

func main() {

    //openFile()
    //isFile()
    //createFile()
    //addFileShow()
    //writerAndRead()
    //readDir() 
    copys("../1.jpg","./1.jpg")

}

// 读取文件夹下的内容
func readDir()  {
    paths := "../"
    ferr := ioutil.ReadDir(paths)
    if err != nil {
        return
    }
    lst := []string{}
    for _file := range f {
        path1 := paths + string(filepath.Separator) + file.Name()
        lst = append(lst, path1)
    }
    fmt.Println(lst, f)
}

// 判断文件夹是否存在
func isDirs() bool {
    path := "./txt"
    _,err:= os.Stat(path)
    if err == nil {
        // 目录存在
        return true
    }
    if os.IsNotExist(err) {
        // 目录不存在
        return false
    }
    // 目录不确定存在不
    return false
}

// 分段读取
func openFile() {
    fileerr := os.Open("./cs.go")
    if err != nil {
        fmt.Println(err, "读取错误")
    }
    defer file.Close()

    f := bufio.NewReader(file)

    for {
        strerr1 := f.ReadString('\n'// 读到一个换行就结束
        if err1 == io.EOF {
            break
        }
        fmt.Println(str)
    }
}

// 一次性读取
func isFile() {
    fileerr := ioutil.ReadFile("./cs.go")
    if err != nil {
        fmt.Println("读取失败")
    }
    fmt.Println(string(file))
}

// 创建一个新文件  通过 os 和bufio
func createFile() {
    fileerr := os.OpenFile("./list.go", os.O_WRONLY|os.O_CREATE, 0666)
    if err != nil {
        fmt.Println("openFile close")
    }
    defer file.Close()

    str := "hello liuyang "
    writer := bufio.NewWriter(file) // writer 是缓冲区
    for i := 0; i < 5; i++ {
        writer.WriteString(str + "\n")
    }

    writer.Flush() // 讲缓冲区的数据放入文件

}

// 给创建的文件添加 几个 hello  并讲 添加的内容 和一起显示出来

func addFileShow() {
    path := "./list.go"
    fileerr := os.OpenFile(path, os.O_RDWR|os.O_APPEND, 0666)
    if err != nil {
        fmt.Println("文件读取失败", path)
        panic("错误")
    }
    defer file.Close()

    fmt.Println("111")
    readr := bufio.NewReader(file)
    for {
        str1err1 := readr.ReadString('\n')
        if err1 == io.EOF { // 文件末尾了
            break
        }
        fmt.Println(str1, err1, "----")
    }

    str := "hello88787877878\n"
    writer := bufio.NewWriter(file)
    for i := 0; i < 10; i++ {
        writer.WriteString(str)
    }
    writer.Flush()
}

// 讲一个文件的内容 写入到另外一个文件里面  两个文件已经存在
func writerAndRead() {

    path1 := "./list.go"
    path2 := "./cs.go"

    file1err1 := os.Open(path2)
    if err1 != nil {
        fmt.Println("读取文件失败", file1)
    }

    file2err2 := os.OpenFile(path1, os.O_RDWR|os.O_APPEND, 0666)
    if err2 != nil {
        fmt.Println("文件读取失败", err2)
    }

    defer file1.Close()
    reads := bufio.NewReader(file1)
    writers := bufio.NewWriter(file2)

    for {
        ferr3 := reads.ReadString('\n')
        if err3 == io.EOF {
            break
        }
        writers.WriteString(f)
    }
    writers.Flush()

}

func copys(dstFile, srcFile string) (int64error) {

    srcF,err := os.Open(srcFile)
    if err != nil {
        fmt.Println("open srcFile 出错",err)
        return 0nil
    }
    defer srcF.Close()
    reader := bufio.NewReader(srcF)

    dstF,err1 := os.OpenFile(dstFile,os.O_WRONLY|os.O_CREATE,0666)
    if err1 != nil {
        fmt.Println("open dstFile 出错",err)
        return 0nil
    }

    weitr := bufio.NewWriter(dstF)

    defer dstF.Close()

    return io.Copy(weitr,reader)

}



×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

打赏作者
版权所有,转载注意明处:前端笔记 » Golang的 文件操作

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)