golang文件读写操作

golang文件读写操作

推荐使用ioutil读写

package main

import (
	"fmt"
	"io/ioutil"
	"os"
)

func main() {
	read1()
	//read2()

	//fmt.Println(checkFileIsExist("logs/2021-02-07.log"))
	//fmt.Println(checkFileIsExist("logs/2021-02-08.log"))

	//write1()

}

//如果文件不存在,WriteFile将会创建该文件,且文件的权限是perm;如果文件存在,先清空文件内容再写入
func write1(){
	content := []byte("1111hello golang")
	//将指定内容写入到文件中
	err := ioutil.WriteFile("logs/output.txt", content, 0666)
	if err != nil {
		fmt.Println("ioutil WriteFile error: ", err)
	}
}

//将文件整个读入内存
func read1() {
	file, err := os.Open("logs/2021-02-07.log")
	if err != nil {
		panic(err)
	}
	defer file.Close()
	content, err := ioutil.ReadAll(file)
	fmt.Println(string(content))
}
//将文件整个读入内存,效率比较高,占用内存也最高。
func read2()  {
	filepath := "logs/2021-02-07.log"
	content ,err :=ioutil.ReadFile(filepath)
	if err !=nil {
		panic(err)
	}
	fmt.Println(string(content))
}

/**
 * 判断文件是否存在  存在返回 true 不存在返回false
 */
func checkFileIsExist(filename string) bool {
	var exist = true
	if _, err := os.Stat(filename); os.IsNotExist(err) {
		exist = false
	}
	return exist
}


文件其他操作示例

package main

import (
	"bufio"
	"fmt"
	"io"
	"io/ioutil"
	"log"
	"os"
	"strings"
	"time"
)

func main()  {
	//filewriteApp("aaa")
	filewriteApp("{\"d\":[{\"ct\":1623139822000,\"shengzhijil\":9.31,\"zuzhijilu\":10.12}],\"g\":\"T0006.A\",\"id\":\"omldeviceID\",\"t\":1623139822302,\"v\":1}")
	//FileWrite("test2.log", []byte("fff"))
	//FileWrite("test2.log", []byte("dddd"))

	filew()
}

func filewriteApp(str_content string)  {
	fd,_:=os.OpenFile("test3.log",os.O_RDWR|os.O_CREATE|os.O_APPEND,0644)
	fd_time:=time.Now().Format("2006-01-02 15:04:05");
	fd_content:=strings.Join([]string{"======",fd_time,"=====",str_content,"\n"},"")
	buf:=[]byte(fd_content)
	fd.Write(buf)
	fd.Close()

}

func filew()  {
	fi, err := os.Open("test3.log")
	if err != nil {
		fmt.Printf("Error: %s\n", err)
		return
	}
	defer fi.Close()

	br := bufio.NewReader(fi)
	for {
		a, _, c := br.ReadLine()
		if c == io.EOF {
			break
		}
		fmt.Println(string(a))
		fmt.Println("=====")
	}
}

func FileWrite(fileName string, data []byte) bool {
	//如果文件不存在, 会自动创建,如果文件存在,先清空文件内容再写入
	err := ioutil.WriteFile(fileName, data, 0666)
	if err != nil {
		log.Println("FileWrite ioutil WriteFile error: ", err)
		return false
	}
	return true
}

func FileRead(filepath string) []byte {
	content, err := ioutil.ReadFile(filepath)
	if err != nil {
		log.Println("FileRead ioutil ReadFile error: ", err)
	}
	return content
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beyond阿亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值