一:常规文件
1.go读取文件第一种做法【案例就是复制文件】
filePath:="./show.txt" copyFilepath:="./copy.txt" file,_:=os.Open(filePath) defer file.Close() buf:=make([]byte,1024) for { _,err:=file.Read(buf) if err == io.EOF { break; } copyfile,_:= os.OpenFile(copyFilepath,os.O_APPEND|os.O_CREATE,666)//复制文件给另一个 copyfile.Write(buf) }
2.go读取完人家第二种做法
//读取文件第二种办法 bufio filePath:="./show.txt" file,_:=os.OpenFile(filePath,os.O_CREATE|os.O_APPEND,666) buf:=make([]byte,1024) newReader:=bufio.NewReader(file) n,_:=newReader.Read(buf) fmt.Println(string(buf[:n]))
3.go读取文件第三种做法
//读取文件第三中办法 filePath:="./show.txt" buf,err:=ioutil.ReadFile(filePath) if err != nil { fmt.Println("read file is error") } fmt.Println(string(buf))
二:json文件
1.读取json文件【简单案例】
package main import ( "encoding/json" "fmt" "io/ioutil" ) type Persion struct { Name string Age int Sex int } func main(){ p1:= Persion{} filePath:="./t1.json" content,_:=ioutil.ReadFile(filePath) json.Unmarshal(content,&p1) fmt.Println(p1.Name) fmt.Println(p1.Age) fmt.Println(p1.Sex) }
2.复杂一点
//这是json文件
{ "name":"lisi", "age": 20, "sex": 1, "company":{ "name": "测试信息", "address": "测试地址", "tel": "1231312312312" } }
//这是代码
package main import ( "encoding/json" "fmt" "io/ioutil" ) type Company struct { Name string Address string Tel string } type Persion struct { Name string Age int Sex int Company Company } //如果json文件有嵌套的话 func main(){ p1:= Persion{} filePath:="./t1.json" content,_:=ioutil.ReadFile(filePath) fmt.Println(string(content)) json.Unmarshal(content,&p1) fmt.Println(p1.Name) fmt.Println(p1.Age) fmt.Println(p1.Sex) fmt.Println(p1.Company.Name) }
3.生成json文件
package main import ( "encoding/json" "io/ioutil" ) type Company struct { Name string Address string Tel string } type Persion struct { Name string Age int Sex int Company Company } //如果json文件有嵌套的话 func main(){ p1 :=&Persion{} p1.Name="lisi" p1.Age=20 p1.Sex=1 p1.Company.Name="测试名字" p1.Company.Address="测试地址信息" p1.Company.Tel="130011666" targetFile := "./per.json" data,_:=json.Marshal(p1) ioutil.WriteFile(targetFile,data,666) }
三:日志文件
描述:go记录日志方式使用包【log】里面有三个比较重要的方法print,Panicln,Fatalln使用方式如下
1.print方法使用
filePath:="./log.txt" file,_:= os.OpenFile(filePath,os.O_APPEND|os.O_CREATE,666) no:=[]int{6,8,10} log.SetOutput(io.Writer(file)) defer file.Close() log.Print(no) //打日志,程序继续向下执行
2.Panic函数
filePath:="./log.txt" file,_:= os.OpenFile(filePath,os.O_APPEND|os.O_CREATE,666) no:=[]int{6,8,10} log.SetOutput(io.Writer(file)) defer file.Close() log.Panic(no) //打日志,报错,程序执行到这里终止执行
3.Fatal函数
filePath:="./log.txt" file,_:= os.OpenFile(filePath,os.O_APPEND|os.O_CREATE,666) no:=[]int{6,8,10} log.SetOutput(io.Writer(file)) defer file.Close() log.Fatal(no) //打日志,不报错 程序执行到这里终止执行