21.处理文件

使用ioutil包读写文件

读取文件

//返回的是字节切片
filtByets,err := ioutil.ReadFile("example.txt")
  • 返回一个字节切片
  • 将返回的字节转换为字符串才能输出

创建文件

err := ioutil.WriteFile("example.txt",b,0644)
  • 第一个参数为文件名
  • 第二个参数为要写入的数据
  • 第三个参数为应用于文件的权限,权限设置以UNIX系统为准
  • 如果要创建文件,可以设置
    //创建一个空的字符切片进行写入
    b= make([]byte,0)

image-20210129214631758

写入文件

s := "Hello,world"
err := ioutil.WriteFile("example.txt",[]byte(s),0644)

列出目录的内容

files,err := ioutil.ReadDir(".")
  • 返回一个列表,其中包含按文件名排序的文件。文件名的类型为FiltInfo,包含以下信息
  • Name:文件的名称
  • Size:文件的长度,单位为字节
  • Mode:用二进制位表示的权限
  • ModTime:文件最后一个被修改的时间
  • IsDir:文件是否是目录
  • Sys:底层数据源
files,err := ioutil.ReadDir(".")

for _,file :=range files {
    fmt.Println(file.Name())
    fmt.Println(file.Size())
}

复制文件

复制文件的步骤

  1. 打开要复制的文件
  2. 读取其中的内容弄个
  3. 创建并打开要将这些内容复制到其中的文件
  4. 将内容写入这个文件
  5. 关闭所有已打开的文件
package main

import(
    "log"
    "os"
    "io"
)

func main(){
    from,err := os.Open("./text.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer from.Close()

    to,err := os.OpenFile("./txet2.txt",os.O_RDWR|os.O_CREATE,0666)
    if err !=nil{
        log.Fatal(err)
    }
    defer to.Close()

    _,err = io.Copy(to,from)
    if err !=nil{
        log.Fatal(err)
    }
}
  • 使用Open来读取磁盘文件
  • 使用函数OpenFile打开文件,第一参数是要打开的文件名称(如果不存在,就创建);第二个参数是用于文件的标志,在这里指定的是读写文件,并在文件不存在时创建它,最后一个参数设置文件的权限
  • 使用io包中的函数Copy复制源文件的内容,并将其写入目标文件

删除文件

err := os.Remove("./deleteme.txt")

使用文件来管理配置

使用JSON文件

可以使用JSON文件来存储配置,这样可以使用Go语言将JSON解码为结构体来进行使用

使用TOML文件

TOML文件是一种专为存储配置文件而设计的格式,相比于JSON,其表达能力更强,且更容易映射到Go类型。JSON是为序列化数据而设计的,而TOML是专门为存储配置文件而设计的

Name = "George"
Awake = true
Hungry = false

可以下载第三方包来解析TOML

go get github.com/BurntSushi/toml
//创建空结构体
c := Config()
_,err := toml.DecodeFile("config.toml",&c)
© 版权声明
THE END
喜欢就支持以下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容