go文件操作看这一篇就够了

目录

一:json文件操作

二:xml文件操作

三:txt文件操作


一:json文件操作

使用encoding/json这个库

1:创建json文件

package main

import (
    "encoding/json"
    "fmt"
    "os"
)

type User struct {
    Name   string `xml:"name,attr"`
    Dept    string
    Group []string
}

func main() {
    user := []User{{"小刘", "技术部", []string{"营销管理", "客服管理"}}, {"小王", "品牌部", []string{"品牌管理", "营销管理"}}}

    fileObj, err := os.Create("user.json")
    if err != nil {
        fmt.Println("文件创建失败", err.Error())
        return
    }
    defer fileObj.Close()

    // 创建Json编码器
    encoder := json.NewEncoder(fileObj)

    err = encoder.Encode(user)
    if err != nil {
        fmt.Println("编码失败", err.Error())

    } else {
        fmt.Println("编码成功")
    }
}

2:读取json文件

package main

import (
    "encoding/json"
    "fmt"
    "os"
)

type User struct {
    Name    string `xml:"name,attr"`
    Dept    string
    Group []string
}

func main() {
    var user []User

    fileObj, err := os.Open("user.json")
    if err != nil {
        fmt.Println("文件打开失败", err.Error())
        return
    }
    defer fileObj.Close()

    // 创建Json编码器
    decoder := json.NewDecoder(fileObj)

    err = decoder.Decode(&user)
    if err != nil {
        fmt.Println("解码失败", err.Error())

    } else {
        fmt.Println("解码成功")
        fmt.Println(user)
    }
}

二:xml文件操作

使用encoding/xml这个库

1:创建文件

package main

import (
    "encoding/xml"
    "fmt"
    "os"
)

type User struct {
    Name    string `xml:"name,attr"`
    Dept    string
    Group []string
}

func main() {
    user := User{"小刘", "技术部", []string{"营销管理", "客服管理"}}

    fileObj, err := os.Create("user.xml")
    if err != nil {
        fmt.Println("文件创建失败", err.Error())
        return
    }
    defer fileObj.Close()

    // 创建xml编码器
    encoder := xml.NewEncoder(fileObj)

    err = encoder.Encode(user)
    if err != nil {
        fmt.Println("编码错误", err.Error())

    } else {
        fmt.Println("编码成功")
    
    }
}

2:读取文件

package main

import (
    "encoding/xml"
    "fmt"
    "os"
)

type User struct {
    Name    string `xml:"name,attr"`
    Dept    string
    Group []string
}

func main() {
    user := User{}

    fileObj, err := os.Open("user.xml")
    if err != nil {
        fmt.Println("文件打开失败", err.Error())
        return
    }
    defer fileObj.Close()

    // 创建xml编码器
    decoder := xml.NewDecoder(fileObj)
    err = decoder.Decode(&user)
    if err != nil {
        fmt.Println("解码失败", err.Error())

    } else {
        fmt.Println("解码成功")
        fmt.Println(user)
    
    }
}

三:txt文件操作

1:写入

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
   
    filePath := "./info.txt"
    fileObj, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE, 0666)
    if err != nil {
        fmt.Printf("打开文件错误= %v \n", err)
        return
    }
    //及时关闭
    defer fileObj.Close()
    //写入内容
    str := "test\n" // \n\r表示换行  txt文件要看到换行效果要用 \r\n
    //写入时,使用带缓存的 *Writer
    writer := bufio.NewWriter(fileObj)
    for i := 0; i < 5; i++ {
        writer.WriteString(str)
    }
 
    //调用 flush方法,将缓存的数据真正写入到文件中。
    writer.Flush()
}

2:读取

package main

import (
    "bufio"
    "fmt"
    "os"
    "io"
)

func main() {
   
    filePath := "./info.txt"
    fileObj, err := os.Open(filePath)
    if err != nil {
        fmt.Printf("打开文件错误= %v \n", err)
        return
    }
    //及时关闭
    defer fileObj.Close()

    reader := bufio.NewReader(fileObj)
    for {
        str, err := reader.ReadString('\n') //读到一个换行就结束
        if err == io.EOF {                  //io.EOF 表示文件的末尾
            break
        }
        fmt.Print(str)
    }
 

}

  • 25
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

攻城狮的梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值