0
点赞
收藏
分享

微信扫一扫

Go语言-文件读取访问案例

想溜了的蜗牛 2022-04-13 阅读 89
golang

Go语言-文件读取访问案例

文件读取

一次性读取

package ioutil

eg:

package main

import (
	"fmt"
	"io/ioutil"
)

func main() {
	// 直接打开与读取
	filePath := "F:/a.txt"
	content, err := ioutil.ReadFile(filePath) // 返回值为[]byte数组
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(string(content)) // 我们需要转成string
}

带缓冲读取

package os & bufio

eg:

package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
)

func main() {
   // 1.打开
	file, err := os.Open("F:/a.txt")
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(file)
	reader := bufio.NewReader(file)
	// 2.读取
   for {
		s, err := reader.ReadString('\n')
		if err == io.EOF {
			break
		}
		fmt.Print(s)
	}
   // 3.关闭
	err = file.Close()
	if err != nil {
		fmt.Println(err)
	}
}

文件写入

一次性写入

package main

import (
	"fmt"
	"io/ioutil"
)

func main() {
	// 1.一次性写入
	// 2.如果文件不存在就创建,如果存在就覆盖
	// 3.以字符切片的形式写入
	filePath := "F:/a.txt"
	data := []byte{'1', '2', '3', '4'}
	err := ioutil.WriteFile(filePath, data, 0666)
	if err != nil {
		fmt.Println(err)
	}
}

带缓冲写入

eg:

package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	// 1.打开
	filePath := "F:/abc.txt"
	file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE, 0000) // 写入与创建方式打开
	if err != nil {
		fmt.Println(err)
		return
	}
	defer file.Close() // 写入完毕后要关闭文件
	// 2.写入
	str := "hello world\n"	// \n如果不换行可试用\r
	writer := bufio.NewWriter(file)
	for i := 0; i < 5; i++ {
		writer.WriteString(str)
	}
	writer.Flush() // 要刷新缓冲才能写入
}

DOGE奖励程序案例

package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
	"strconv"
	"strings"
	"time"
)

func main() {
	filePath := "C:/DOGEGAIN.txt"
	file, err := os.OpenFile(filePath, os.O_RDWR|os.O_APPEND, 0666)
	if err != nil {
		return
	}
	defer file.Close()
	sum, t := 0, 0
	reader := bufio.NewReader(file)
	var str string
	for {
		str, err = reader.ReadString('\n')
		if err == io.EOF {
			break
		}
		t, _ = strconv.Atoi(strings.Split(str, "\t")[0])
		sum += t
	}
	fmt.Println("SUM:", sum)
	writer := bufio.NewWriter(file)
	_, err = fmt.Scan(&t)
	if err != nil {
		return
	}
	for {
		sum += t
		str = strconv.Itoa(t) + "\t" + time.Now().Format("01.02-03:04:05") + "\tSUM:" + strconv.Itoa(sum) + "\n"
		writer.WriteString(str)
		writer.Flush()
		_, err = fmt.Scan(&t)
		if err != nil {
			return
		}
	}
}

举报

相关推荐

0 条评论