Go语言学习之路(九)读取文件

前言

我们的程序肯定避免不了对文件读取和写入,包括在程序启动时对配置文件的读取,在项目运行时可能会对某些文件有写入操作,这些都是必不可少的操作,今天我们就来学习学习文件的读取

原生读取

这里我们分两步,一个是打开文件,获取文件信息,另一个是直接读取文件内容
文件打开

// 打开文件
	file, err := os.Open("/Users/dongshirong/Desktop/text/text.txt")
	if err != nil {
		panic("文件打开失败")
	}
	fmt.Println(file.Name())
	file.Close()

直接读取文件内容

// 读取文件内容
	content, err := os.ReadFile("/Users/dongshirong/Desktop/text/text.txt")
	if err != nil {
		panic("读取失败")
	}
	fmt.Println(string(content))

读取配置文件

读取配置文件才是我们程序最需要的东西,配置文件一般是.properties和.yml

1、viper

支持多种配置文件格式,包括 JSON,TOML,YAML,HECL,envfile,甚至还包括Java properties,也支持默认设置
首先,我在桌面的创建了文件夹text,并添加了文件application.yml,如下图
在这里插入图片描述
然后使用go读取文件

import (
	"fmt"
	"github.com/spf13/viper"
)

func main() {
	// 直接设置读取文件
	//viper.SetConfigFile("/Users/dongshirong/Desktop/text/application.yml")
	// 设置读取文件名及读取路径、扩展名
	viper.SetConfigName("application")
	viper.AddConfigPath("/Users/dongshirong/Desktop/text/")
	viper.SetConfigType("yml")
	err := viper.ReadInConfig()
	if err != nil {
		panic("读取配置信息失败")
	}
	keys := viper.AllKeys()
	fmt.Println(keys)
	fmt.Println(viper.ConfigFileUsed())
	fmt.Print(viper.Get("test"))
	var cfg config
	viper.Unmarshal(&cfg)
	fmt.Println(cfg)
}

type config struct {
	Server      server
	Application application
	test        string
}
type server struct {
	Port string
	Name string
}
type application struct {
	Mysql string
}

  • 如果只设置了文件名和文件路径,则会按照以下扩展名找到第一个进行读取json、toml、yaml、yml、properties、props
  • 两种方式必须任选其一,否则根本不知道在哪里读取

2、使用configor

结构体与文件和1中一致,只需要稍微修改代码即可

import (
	"fmt"
	"github.com/jinzhu/configor"
)

func main() {
	var Config config
	err := configor.New(&configor.Config{
		//Debug:                true,
		//ErrorOnUnmatchedKeys: true,
		//AutoReload:           true,
		//AutoReloadInterval: time.Second,
        //AutoReloadCallback: func(config interface{}) {
         	//config变化后触发
      	//},
	}).Load(&Config, "/Users/dongshirong/Desktop/text/application.yml")
	if err != nil {
		panic(err)
	}
	fmt.Print(Config)
}
  • 这里可以配置热加载AutoReload和AutoReloadInterval
  • 这里的解析也支持yml,json,ymal,toml

这样我们就可以很简单的从配置文件中获取我们想要的东西,也可以加在不同的配置文件进行读取了

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值