V2版本: 改进操作界面,统一表单样式,更多工具支持批量生成,欢迎使用 到达~


文库 阅读
作者: xiaoyu 11/07 14:22:55

【Go】操作文件读取写入追加,将读取到的内容分段写入多个新文件

代码写的不算精简,但是能用

仅供参考


package main

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

func read() {
	//打开文件
	file, err := os.Open("D:/WWW/go/test/dom.txt")
	if err != nil {
		fmt.Println("文件打开失败 = ", err)
	}
	//及时关闭 file 句柄,否则会有内存泄漏
	defer file.Close()
	//创建一个 *Reader , 是带缓冲的
	reader := bufio.NewReader(file)
	count := 0
	filecount := 0
	fname := "0.txt"

	for {
		str, err := reader.ReadString('\n') //读到一个换行就结束
		if err == io.EOF {                  //io.EOF 表示文件的末尾
			break
		}
		if count > 999 {
			count = 0
			filecount += 1
			fname = strconv.Itoa(filecount) + ".txt"
		}
		write(str, fname)
		count++
	}
	fmt.Println("文件读取结束...")
}

func write(cont string, filename string) {
	//创建一个新文件,写入内容
	filePath := "D:/WWW/go/test/dom/" + filename
	file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
	if err != nil {
		fmt.Printf("打开文件错误= %v \n", err)
		return
	}
	//及时关闭
	defer file.Close()
	//写入内容
	str := cont
	//写入时,使用带缓存的 *Writer
	writer := bufio.NewWriter(file)
	writer.WriteString(str)
	//因为 writer 是带缓存的,因此在调用 WriterString 方法时,内容是先写入缓存的
	//所以要调用 flush方法,将缓存的数据真正写入到文件中。
	writer.Flush()
}

func main() {
	read()
}

输出:

最终创建出多个文件,每个文件1000行

About

实现将一个有10万行的文本文件,按1000行分段,写到新的文件里面

Resources

发布

未发布任何资源
首页 喜欢 我的 定制
定制咨询
微信二维码
扫一扫上面的二维码,加我为朋友。
微信扫码周一至周六服务
接定制开发需求