golang学习的点点滴滴:读写文件(面向对象版)

本文介绍了一个使用Go语言进行文件读写的示例代码,包括定义结构体、初始化方法及读写操作。通过该示例,读者可以了解如何利用标准库中的bufio包来逐行读取文件内容,并将整数数据写入到另一个文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package main 

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

// 定义一个结构体
type ReadWrite struct {
	In *string
	Out *string
}

// 定义初始化方法
func (rw *ReadWrite) Init() {
	rw.In = flag.String("in", "in", "in")
	rw.Out = flag.String("out", "out", "out")
	flag.Parse()
}

// 定义读文件的方法
func (rw *ReadWrite) Read() (result []int, err error) {
	file, err1 := os.Open(*(rw.In))

	if nil != err1 {
		panic("error to open file...")
	}

	defer file.Close()

	br := bufio.NewReader(file)
	result = make([]int, 0)

	for {
		line, isPrefix, err2 := br.ReadLine()

		if nil != err2 {
			if io.EOF == err2 {
				fmt.Println("finish read ...")
			}
			break
		}

		if isPrefix {
			return
		}

		str := string(line)
		value, err3 := strconv.Atoi(str)

		if nil != err3 {
			err = err3
			return
		}

		result = append(result, value)
	}

	return
}

// 定义写文件的方法
func (rw *ReadWrite) Write(value []int) {
	file, err := os.Create(*(rw.Out))
	if nil != err {
		panic("error to create file...")
	}

	defer file.Close()

	for index, res := range value {
		str := strconv.Itoa(res*index)
		file.WriteString(str + "\n")
	}
}

func main() {
	defer func() {
			if ex:=recover();ex!=nil {
				fmt.Println(ex)
			}
		}()

	rw := new(ReadWrite)
	rw.Init()
	value, err := rw.Read()
	
	if nil != err {
		panic("error.....")
	}

	rw.Write(value)
}


转载于:https://my.oschina.net/qibin/blog/323341

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值