新聞中心
Go語言提供了很多文件操作的支持,在不同場景下,有對(duì)應(yīng)的處理方式,本節(jié)我們來介紹一下文本文件的讀寫操作。

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)曲江免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
寫純文本文件
由于Go語言的 fmt 包中打印函數(shù)強(qiáng)大而靈活,寫純文本數(shù)據(jù)非常簡單直接,示例代碼如下所示:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
//創(chuàng)建一個(gè)新文件,寫入內(nèi)容
filePath := "./output.txt"
file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE, 0666)
if err != nil {
fmt.Printf("打開文件錯(cuò)誤= %v \n", err)
return
}
//及時(shí)關(guān)閉
defer file.Close()
//寫入內(nèi)容
str := "http://c.biancheng.net/golang/\n" // \n\r表示換行 txt文件要看到換行效果要用 \r\n
//寫入時(shí),使用帶緩存的 *Writer
writer := bufio.NewWriter(file)
for i := 0; i < 3; i++ {
writer.WriteString(str)
}
//因?yàn)?writer 是帶緩存的,因此在調(diào)用 WriterString 方法時(shí),內(nèi)容是先寫入緩存的
//所以要調(diào)用 flush方法,將緩存的數(shù)據(jù)真正寫入到文件中。
writer.Flush()
}運(yùn)行上面代碼會(huì)在當(dāng)前目錄下生成一個(gè) output.txt 文件,文件內(nèi)容如下:
http://c.biancheng.net/golang/
http://c.biancheng.net/golang/
http://c.biancheng.net/golang/
讀純文本文件
打開并讀取一個(gè)純文本格式的數(shù)據(jù)跟寫入純文本格式數(shù)據(jù)一樣簡單。要解析文本來重建原始數(shù)據(jù)可能稍微復(fù)雜,這需根據(jù)格式的復(fù)雜性而定。
示例代碼如下所示:
package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
//打開文件
file, err := os.Open("./output.txt")
if err != nil {
fmt.Println("文件打開失敗 = ", err)
}
//及時(shí)關(guān)閉 file 句柄,否則會(huì)有內(nèi)存泄漏
defer file.Close()
//創(chuàng)建一個(gè) *Reader , 是帶緩沖的
reader := bufio.NewReader(file)
for {
str, err := reader.ReadString('\n') //讀到一個(gè)換行就結(jié)束
if err == io.EOF { //io.EOF 表示文件的末尾
break
}
fmt.Print(str)
}
fmt.Println("文件讀取結(jié)束...")
}運(yùn)行結(jié)果如下:
go run main.go
http://c.biancheng.net/golang/
http://c.biancheng.net/golang/
http://c.biancheng.net/golang/
文件讀取結(jié)束...
新聞標(biāo)題:創(chuàng)新互聯(lián)GO教程:Go語言純文本文件的讀寫操作
文章源于:http://m.5511xx.com/article/dpgdpgi.html


咨詢
建站咨詢
