成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go 編程語(yǔ)言中使用文本文件指南

開(kāi)發(fā)
如果您想知道如何開(kāi)始在Go中操作文本文件,那么本文是適合您的地方。

作為一種編程語(yǔ)言,Go 具有廣泛的內(nèi)置功能,包括創(chuàng)建、讀取和寫(xiě)入文本(.txt)文件等文件的功能。

文件是現(xiàn)代世界我們?nèi)粘I畹闹匾M成部分。文本文件對(duì)于存儲(chǔ)結(jié)構(gòu)化的人類可讀數(shù)據(jù)非常有用,而無(wú)需使用外部軟件或數(shù)據(jù)庫(kù)。

如果您想知道如何開(kāi)始在Go中操作文本文件,那么本文是適合您的地方。

Go 中的 bufio 包

bufio 包是 Go 標(biāo)準(zhǔn)庫(kù)的一部分,用于緩沖輸入和輸出操作,因此得名。 bufio 包基于 io.Reader 和 io.Writer 接口構(gòu)建,它們廣泛用于大多數(shù) Go 標(biāo)準(zhǔn)包的實(shí)現(xiàn)。

bufio 包通過(guò)實(shí)現(xiàn)緩沖更進(jìn)一步,使其對(duì)涉及文本數(shù)據(jù)的 IO 操作很有用。

要在您的程序中使用 bufio 包,您應(yīng)該將它與其他包一起導(dǎo)入。

import (
"fmt"
"bufio"
)

當(dāng)您開(kāi)始使用 Go 時(shí),您可能聽(tīng)說(shuō)過(guò)它包含作為程序員可能需要的一切。 為了與您的操作系統(tǒng)直接通信,有一個(gè)名為 os 的包,它提供了與平臺(tái)無(wú)關(guān)的功能。

os 和 bufio 包使文本文件操作變得異常簡(jiǎn)單。

盡管 os 包的絕大多數(shù)函數(shù)都是類 Unix 的,但它們都采用 Go 風(fēng)格的錯(cuò)誤處理,這使得閱讀錯(cuò)誤消息和調(diào)試代碼變得簡(jiǎn)單。

那么,如何在Go中操作包含文本的文件呢?

如何從文本文件中讀取數(shù)據(jù)

要從文本文件中讀取數(shù)據(jù),您需要調(diào)用 os 包的 Open() 函數(shù),該函數(shù)接受要讀取的文件名作為參數(shù)。 獲取文件的另一種方法是使用 OpenFile() 函數(shù)。

Open() 和 OpenFile() 之間的主要區(qū)別在于它們的實(shí)現(xiàn)。 Open() 以只讀模式打開(kāi)文件(使用 O_RDONLY 標(biāo)志),而 OpenFile() 通過(guò)接受三個(gè)參數(shù)來(lái)提供更大的靈活性,即:

  • 文件名
  • 文件打開(kāi)模式:有效的文件打開(kāi)模式如下表所示。

標(biāo)志

含義

O_RDONLY

以只讀模式打開(kāi)文件

O_WRONLY

以只寫(xiě)模式打開(kāi)文件

O_RDWR

以讀寫(xiě)模式打開(kāi)文件

O_APPEND

寫(xiě)入時(shí)將數(shù)據(jù)追加到文件

O_CREATE

創(chuàng)建新文件(如果不存在)

O_EXCL

與O_CREATE一起使用,以指示僅當(dāng)文件不存在時(shí)才應(yīng)創(chuàng)建該文件

O_SYNC

打開(kāi)同步 I/O 的文件

O_TRUNC

如果可能,在打開(kāi)時(shí)截?cái)辔募?/p>

  • 文件權(quán)限:與 Linux 中用于指定文件訪問(wèn)規(guī)則的文件權(quán)限位相同,例如,0777 向所有用戶類型授予讀取、寫(xiě)入和執(zhí)行權(quán)限。

下面的代碼展示了如何使用 os.Open() 和 Scan() 從 Go 中的文本文件中讀取數(shù)據(jù), 在本例中,Scan() 在 Go for 循環(huán)中運(yùn)行。

package main
import (
"bufio"
"fmt"
"log"
"os"
)
/**
CONTENT OF THE "linuxmi.txt" file.
lorem ipsum dolor sit amet
LOREM IPSUM DOLOR SIT AMET
Lorem ipsum dolor sit amet
Lorem Ipsum Dolor Sit Amet
lOREM iPSUM dOLOR sIT aMET
LoReM IpSuM DoLoR SiT AmEt
*/
func main() {
file, err := os.Open("linuxmi.txt")
// another method using os.OpenFile()
// file, err = os.OpenFile("linuxmi.txt", os.O_RDONLY, 0644)
if err != nil {
log.Fatal(err)
}
defer file.Close()
fmt.Println("File opened successfully. Now reading file contents line by line:")
// create scanner from the file to read text from
scanner := bufio.NewScanner(file)
// scan or read the bytes of text line by line
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
}

運(yùn)行上面的代碼,它會(huì)產(chǎn)生如下所示的輸出:

從文件中讀取文本的程序輸出。

如果你只傳入文件名而不是 Open() 或 OpenFile() 函數(shù)的路徑以進(jìn)行讀取操作,Go 會(huì)假定文件在當(dāng)前目錄中,如果找不到則返回錯(cuò)誤。 如果您需要處理當(dāng)前目錄之外的文件,您應(yīng)該傳入文件的路徑。

如何將數(shù)據(jù)寫(xiě)入文本文件

bufio 包提供了一個(gè)緩沖的 Writer 接口,該接口存儲(chǔ)數(shù)據(jù)字節(jié)并在 Flush() 函數(shù)的幫助下將它們寫(xiě)入文件。

下一個(gè)示例代碼是讀取文件的延續(xù)。 在此示例中,使用 O_WRONLY 和 O_APPEND 標(biāo)志將數(shù)據(jù)寫(xiě)入現(xiàn)有的 linuxmi.txt。

將以下代碼行添加到上面的程序中,在 main() 函數(shù)的右花括號(hào)之前:

  // 將輸出數(shù)據(jù)寫(xiě)入文件
file, err = os.OpenFile("linuxmi.txt", os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
log.Fatal(err)
}
defer file.Close()
fmt.Println("文件打開(kāi)成功,正在準(zhǔn)備將數(shù)據(jù)寫(xiě)入文件...")
// 創(chuàng)建緩沖的 Writer 對(duì)象以將數(shù)據(jù)寫(xiě)入文件
textWriter := bufio.NewWriter(file)
// 在保存文件之前將字符串寫(xiě)入緩沖區(qū)。
_, err = textWriter.WriteString("-這是添加到文件中的新文本。")
if err != nil {
log.Fatal(err)
}
textWriter.Flush()
fmt.Println("數(shù)據(jù)寫(xiě)入文件成功...")

完整程序的輸出應(yīng)如下所示:

程序的輸出以讀取和寫(xiě)入文本文件。

當(dāng)您打開(kāi) linuxmi.txt 文件時(shí),您還將看到文件末尾附加的新行,如下圖所示:

Go 中的文件處理非常簡(jiǎn)單

Go 允許您處理各種文件,而不僅僅是文本文件。 有許多額外的內(nèi)置庫(kù)和函數(shù)用于處理來(lái)自文件的不同類型的數(shù)據(jù),包括 JSON 和 CSV。

要查看它們?cè)诓煌闆r下的行為方式有何不同,您可以嘗試可用于 OpenFile() 的各種標(biāo)志和文件權(quán)限。

責(zé)任編輯:趙寧寧 來(lái)源: Linux迷
相關(guān)推薦

2023-05-17 18:45:56

Linux文件

2023-03-31 23:31:06

.go文本文件

2022-11-25 09:16:43

Linux命令

2013-06-25 09:52:32

GoGo語(yǔ)言Go編程

2010-04-30 17:38:31

Unix文本

2021-11-29 09:46:11

FileReaderJava開(kāi)發(fā)

2009-08-06 18:33:45

C#處理文本文件

2009-09-02 19:13:08

C#處理文本文件

2010-01-15 10:05:35

VB.NET文件對(duì)象

2009-08-26 11:53:56

C#打印文本文件

2009-09-02 19:08:03

C#實(shí)現(xiàn)讀取文本文件

2009-09-04 15:56:35

寫(xiě)入文本文件

2021-12-06 07:15:48

類方法類讀取文本

2022-11-03 20:38:01

CMD命令Go

2016-02-22 15:02:57

GoRedis連接池

2015-06-17 14:28:15

Java查詢處理方法

2014-03-11 10:11:33

Linux命令more命令文本文件

2010-02-01 14:26:50

C++讀寫(xiě)文本文件

2009-08-19 17:44:15

C#操作文本文件

2019-02-13 09:20:13

Linux命令行more
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 中文字幕视频在线 | 精品国产乱码一区二区三 | 欧美大片一区二区 | 国产一区二区在线视频 | 国产成人在线一区二区 | 亚洲精品一区二三区不卡 | 中文在线观看视频 | 日韩精品一区二区三区中文字幕 | 精品欧美一区二区在线观看视频 | 精品一区二区三区在线视频 | 黄网站涩免费蜜桃网站 | 日韩精品在线播放 | 二区视频 | 国产精品久久久久久福利一牛影视 | 在线日韩欧美 | 精品美女 | 在线观看视频一区 | 日韩三级在线观看 | 久久精品免费一区二区三 | 99视频精品| 日韩一级| 久久久久综合 | 亚洲精品一区二 | 中文字幕视频在线观看 | 在线成人av | 天堂素人约啪 | 国产视频在线观看一区二区三区 | 一区二区在线看 | 午夜影院毛片 | 国产 欧美 日韩 一区 | 欧美一级做性受免费大片免费 | 成人激情视频免费观看 | 久久国产精品一区二区三区 | 欧美一区二区三 | 亚洲欧洲在线看 | 欧美性受xxxx | 中文字幕亚洲一区 | 亚洲一区二区久久 | av网站在线免费观看 | 亚洲精品高清视频 | 本道综合精品 |