【Go语言】golang 文件读写

简单讨论一下golang中文件读写实现,并附上读写CSV文件的方法

文件读写,首先要有文件路径/文件名,读文件的时候,打开文件,读取数据,处理数据;写文件时,新建文件,关闭文件,打开文件,写入数据。基本思路就是这样子的,然后就上代码。代码注释很详细哒

package main
import (
"bufio"
"bytes"
"encoding/csv"
"fmt"
"io"
"io/ioutil"
"log"
"os"
"strings"
)

//读取文件内容
func readContent(path string) {
//打开文件
inputFile, err := os.Open(path)
checkError(err)
//关闭文件
defer inputFile.Close()
fmt.Println("读取到的内容是")
//读取
inputReader := bufio.NewReader(inputFile)
for {
inputString, err := inputReader.ReadString('\n')
//inputString, _, err := inputReader.ReadLine()
//到末尾就停止
if err == io.EOF {
return
}
//打印
fmt.Printf("%s", inputString)
}
}

//检查错误
func checkError(err error) {
if err != nil {
log.Fatal(err)
}
}

//读和写
func readAndWrite(inputFile, outputFile string) {
//读取文件
buffer, err := ioutil.ReadFile(inputFile)
//检查错误
checkError(err)
//打印
fmt.Printf("读到的内容是\n%s", buffer)
//写入文件
err = ioutil.WriteFile(outputFile, buffer, 0x664)
checkError(err)
}

//写CSV文件,输入文件名和data
func writeCSV(fileName string, data [][]string) {
//new buffer
buffer := new(bytes.Buffer)
//new writer
writer := csv.NewWriter(buffer)
//写数据
writer.WriteAll(data)
writer.Flush()
//打印数据
fmt.Println(buffer)
//新建文件
fileOut, err := os.Create(fileName)
defer fileOut.Close()
checkError(err)
//写入内容
fileOut.WriteString(buffer.String())
}

//读取CSV,输入文件名,返回data
func readCSV(fileName string) [][]string {
buffer, err := ioutil.ReadFile(fileName)
checkError(err)
reader := csv.NewReader(strings.NewReader(string(buffer)))
data, _ := reader.ReadAll()

//fmt.Println(data)
for k, v := range data {
fmt.Println(k, "###", v)
}
return data
}

func main() {
//读取文件内容
//path := "输入文件路径"
//readContent(path)

//读取和写入
//inputFile := "输入文件路径"
//outputFile := "输入文件名"
//readAndWrite(inputFile, outputFile)
//readContent(outputFile)

//读CSV文件,编码格式:UTF8!!!!!
//data := readCSV("请你自己输入!!!")
//写CSV文件
//writeCSV("请你自己写名字!!!", data)

}

就是这样了。
也许会有人问我代码是怎么这么写的?这个很简单:贴代码的时候用<pre></pre>这个标签包住就好了

刘凯宁@C2P
20140731

Share

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*


*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>