golang学习的点点滴滴:读写文件(面向过程版)
2014-09-29 00:00
417 查看
package main import ( "fmt" "bufio" "io" "os" "flag" "strconv" ) // 使用命令行 -in 默认为infile var in *string = flag.String("in", "infile", "input file name ...") var out *string = flag.String("out", "outfile", "output file name ...") func main() { // 解析命令行 flag.Parse() defer func() { // 如果发现异常... if ex := recover();nil!=ex { fmt.Println(ex) } }() value, err := read() if nil != err { // 抛出异常 panic(err) } write(value) } func write(value []int) (err error) { // 创建文件 file, err2 := os.Create(*out) if nil != err2 { err = err2 fmt.Println("error to create file...") return } // 不管怎么着,最后都关闭文件 defer file.Close() for _, res := range value { // 将int类型转化成string str := strconv.Itoa(res+2) // 将string写入file中 file.WriteString(str + "\n") } return nil } func read() (result []int, err error) { // 打开文件 file, err1 := os.Open(*in) if nil != err1 { err = err1 return } // 不管怎么着,最后都关闭文件 defer file.Close() // 从文件创建一个bufferreader 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 ...") } return } if isPrefix { break } // 将字符数组转化成字符串 str := string(line) // 将字符串转化成int value, err3 := strconv.Atoi(str) if nil != err3 { err = err3 break } // 像切片中追加 result = append(result, value) } // 返回结果 return }
相关文章推荐
- golang学习的点点滴滴:读写文件(面向对象版)
- hadoop学习笔记--hadoop读写文件过程
- 孙鑫VC学习笔记:第十二讲 用C++函数读写文件
- Windows窗体编程基础学习:文件读写
- JAVA学习提高之----JAVA读写Properties文件
- C++Builder学习笔记5.1(连接数据库,读写配置文件,加载DLL)
- 学习CB读写文件
- 文件读写学习笔记
- Python学习笔记--文件读写
- 今天开通BLOG,以后准备把学习过程中的点点滴滴都记录下来,
- C#2.0 IO学习之读写二进制文件
- 学习驱动程序过程中的点点滴滴
- [学习笔记]Java 中对文件的读写操作之比较
- 学习使用AutoMake1.9的自动生成工程文件(三)——层叠型加引用静态库工程实践过程
- 孙鑫VC学习笔记:第十二讲 用C语言函数读写文件
- 面向对象学习笔记--面向对象和面向过程
- 文件读写学习笔记
- 孙鑫VC学习笔记:第十二讲 (二) 用C语言函数读写文件
- 孙鑫VC学习笔记:第十二讲 (三) 用C++函数读写文件
- ffmpeg学习之点点滴滴——打开文件并获取文件流信息