目录
一: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)
}
}