参数:name 文件名(这里可以写相对路径,当然也可以写绝对路径)
os.Create("./aaa.json")
os.Create("./aaa.txt")
下图是vscode软件显示json文件和一般的文本文件的区别,这一点还是很友好的。
<2>os.Open()以只读的方式打开文件
参数:name 文件名包含路径(绝对路径和相对路径)
注意:文件打开后,只能读取内容,不能写入和修改文件
open, err := os.Open("./1.text")
if err != nil {
fmt.Println("open file err", err)
fmt.Println("文件获取完毕")
open.Close()
<3>os.OpenFile(): 以不同的模式打开文件
参数:name 文件名包含路径(绝对路径和相对路径)
参数:flag 打开文件的模式,常见的模式有:
O_RDONLY(只读模式)、
O_WRONLY(只写模式)、
O_RDWR(可读可写模式)、
O_APPEND(追加模式)
参数:perm 权限取值范围(0-7)
0-没有任何权限
1-执行权限,如果是可执行文件,是可以运行的
2-写权限
3-写权限与执行权限
4-读权限
5-读权限与执行权限
6-读权限与写权限
7-读权限、写权限、执行权限
3/函数的实战
<1>os.Open()
open, err := os.Open("./1.text")
if err != nil {
fmt.Println("open file err", err)
fmt.Println("文件获取完毕")
open.Close()
open, err := os.Open("./1.text")
defer func() {
if open != nil {
open.Close()
if err != nil {
fmt.Println("open file err", err)
fmt.Println("文件获取完毕")
<2>os.OpenFile()以指定的模式打开文件
有创建,只读,只写,读写,情况,追加
4/写文件
无论是文件读取还是文件写入 都是需要先打开文件 再进行操作。
有3种方式可以写入文件
<1>file.Write 与 file.WriteString
file, err := os.OpenFile("1.text", os.O_RDWR|os.O_TRUNC, 0666)
if err != nil {
fmt.Printf("打开文件出现异常 %v", err)
defer file.Close()
write, err := file.Write([]byte("测试文件写入 \n"))
file.WriteString("一次写入整个字符串")
if err != nil {
fmt.Println(err)
fmt.Println(write)
<2>bufio.NewWriter
file, err := os.OpenFile("2.text", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0666)
if err != nil {
panic(err)
defer func() {
file.Close()
if e := recover(); e != nil {
fmt.Printf("异常 : 打开文件出现异常 %v", e)
writer := bufio.NewWriter(file)
writer.WriteString(" 写入缓存字符串内容 2")
writer.Flush()
<3>ioUtil 工具类
err := ioutil.WriteFile("3.text", []byte("工具类写入内容"), 0666)
if err != nil {
fmt.Println("程序运行出现异常", err)
把json对象写入文件中
package main
import (
_ "encoding/json"
"io/ioutil"
"time"
"strconv"
"fmt"
"github.com/pquerna/ffjson/ffjson"
type publishJson struct {
BgId string `json:"bgId"`
CandBgColor string `json:"candBgColor"`
CurKbType int `json:"curKbType"`
EffectId string `json:"effectId"`
FontColor string `json:"fontColor"`
FontColorChanged bool `json:"fontColorChanged"`
FontId string `json:"fontId"`
KeyId string `json:"keyId"`
KeyTransparent float64 `json:"keyTransparent"`
KeyboardBgName string `json:"keyboardBgName"`
LocalSkinId string `json:"localSkinId"`
Platform int `json:"platform"`
PreviewName26 string `json:"previewName26"`
PreviewName9 string `json:"previewName9"`
SkinName string `json:"skinName"`
SoundId string `json:"soundId"`
UgcSkinVersion int `json:"ugcSkinVersion"`
UseCustomBg bool `json:"useCustomBg"`
func Write2file(file_path string, content publishJson) error{
data, err := ffjson.Marshal(content)
checkError(err)
err = ioutil.WriteFile(path, data, 0777)
checkError(err)
return nil
func checkError(err error) {
if err != nil {
fmt.Println(err)
panic(err)
func main() {
theme_publish1 := publishJson{
BgId: "351",
CandBgColor: "0xdffffcfc",
CurKbType: 2,
EffectId: "-1",
FontColor: "0xff000000",
FontColorChanged: false,
FontId: "-1",
KeyId: "10",
KeyTransparent: 59.025097,
KeyboardBgName: "keyboard_bg.png",
LocalSkinId: "loacl",
Platform: 1,
PreviewName26: "",
PreviewName9: "square_preview.png",
SkinName: "bbb",
SoundId: "-1",
UgcSkinVersion: 1,
UseCustomBg: false,
file_name := "./theme_publish.json"
Write2file(file_name, theme_publish1)
文件不存在则创建,如果文件已经存在则追加写入
package main
import (
"log"
"fmt"
type publishJson struct {
BgId string `json:"bgId"`
CandBgColor string `json:"candBgColor"`
CurKbType int `json:"curKbType"`
EffectId string `json:"effectId"`
FontColor string `json:"fontColor"`
FontColorChanged bool `json:"fontColorChanged"`
FontId string `json:"fontId"`
KeyId string `json:"keyId"`
KeyTransparent float64 `json:"keyTransparent"`
KeyboardBgName string `json:"keyboardBgName"`
LocalSkinId string `json:"localSkinId"`
Platform int `json:"platform"`
PreviewName26 string `json:"previewName26"`
PreviewName9 string `json:"previewName9"`
SkinName string `json:"skinName"`
SoundId string `json:"soundId"`
UgcSkinVersion int `json:"ugcSkinVersion"`
UseCustomBg bool `json:"useCustomBg"`
func Write2file(path string, conten publishJson) {
file, err := os.OpenFile(path, os.O_CREATE|os.O_APPEND|os.O_RDWR, 0666)
if err != nil {
log.Fatal(err)
defer func(file *os.File) {
err := file.Close()
if err != nil {
log.Fatal(err)
}(file)
data, err := json.Marshal(conten)
_, err = file.Write(data)
if err != nil {
log.Fatal(err)
复制代码