GO- 文件操作1-文件读写的一般操作

导入依赖

import (
    "os"
    "fmt"
    "time"
    "bufio"
    "io"
    "io/ioutil"
)

打开和关闭文件

func main41() {
    //打开文件
    filePtr, err := os.Open("d:/小黑子.avi")
    if err != nil {
        fmt.Println("文件打开失败,err=", err)
    } else {
        fmt.Println("文件打开成功")
    }

    //关闭
    //defer filePtr.Close()
    defer func() {
        filePtr.Close()
        fmt.Println("文件已关闭")
    }()

    fmt.Println("愉快滴欣赏avi艺术")
    time.Sleep(3 * time.Second)

}

读取数据

func main42() {
    //打开和关闭文件
    //os.O_RDONLY 以只读模式打开
    //0765 文件主人的权限7(4+2+1=可读+可写+可执行),文件的用户组下的人的权限6(4+2=可读+可写),其他人的权限5(4+1=可读+可执行)
    filePtr, err := os.OpenFile("d:/abc.txt", os.O_RDONLY, 0765)
    if err != nil {
        fmt.Println("文件打开失败,err=", err)
        return
    } else {
        fmt.Println("打开文件成功")
    }

    //打开时立即挂起关闭程序
    defer func() {
        defer filePtr.Close()
        fmt.Println("文件已关闭")
    }()

    //创建文件的读取器
    reader := bufio.NewReader(filePtr)

    //循环读取
    for {
        //以换行符为界,分批次读取数据,得到str(str中包括一个换行符)
        str, err := reader.ReadString('\n')
        if err != nil {
            fmt.Println("读取失败,err=", err)

            //如果已到文件末尾,就结束循环
            if err == io.EOF {
                break
            }
        }

        //打印读到的内容
        fmt.Print(str)
    }

    fmt.Println("读取结束")
}

读取数据2

func main43() {
    bytes, err := ioutil.ReadFile("d:/abc.txt")
    if err != nil {
        fmt.Println("读取失败,err=", err)
    } else {
        contentStr := string(bytes)
        fmt.Println(contentStr)
    }
}

写入数据 
写入数据分三种模式 
- 创写模式 
- 覆写模式 
- 追加模式

func main44() {

    //打开并延时关闭文件
    //创写模式
    //file, err := os.OpenFile("d:/大黑子.avi", os.O_CREATE|os.O_WRONLY, 0754)
    //覆写模式
    //file, err := os.OpenFile("d:/兄弟连.txt", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0754)
    //追加模式
    file, err := os.OpenFile("d:/兄弟连.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0754)

    if err != nil {
        fmt.Println("文件打开失败,err=", err)
        return
    } else {
        fmt.Println("打开文件成功")
    }
    defer file.Close()

    //创建写入器
    writer := bufio.NewWriter(file)

    //执行带缓冲的写入
    writer.WriteString("大海啊你全他妈是水\n")
    writer.WriteString("蜘蛛啊你全他妈是腿\n")
    writer.WriteString("辣椒啊真他妈辣嘴\n")
    writer.WriteString("不好好学习真他妈后悔\n")

    //强制将缓冲区中的内容写入文件
    writer.Flush()

    fmt.Println("写入成功!")
}

判断文件是否存在

func CheckIfFileExist(filename string) (exists bool, info string) {
    fileInfo, err := os.Stat(filename)
    fmt.Println(fileInfo, err)
    if fileInfo != nil && err == nil {
        fmt.Printf("%s文件存在\n", filename)
        exists = true
    } else if os.IsNotExist(err) {
        fmt.Printf("%s文件不存在\n", filename)
        exists = false
    } else {
        fmt.Println("搞不清存不存在!")
        exists = false
        info = "发生了一些奇奇怪怪的事情..."
    }
    return
}
func main45() {
    CheckIfFileExist("d:/小黑子.avi")
    CheckIfFileExist("d:/小白子.avi")
}

快捷写入

func main46() {
    //默认模式:os.O_WRONLY|os.O_CREATE|os.O_TRUNC=只写+不存在就创建+【覆写模式】
    err := ioutil.WriteFile("d:/abc.txt", []byte("再看我\n再看我就把你喝掉"), 0754)
    if err != nil {
        fmt.Println("写入失败")
    } else {
        fmt.Println("写入成功")
    }
    fmt.Println("写入结束")
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值