13 go檔案讀取 和 寫入

2021-10-12 17:33:30 字數 2944 閱讀 9871

01、golang開啟檔案讀出一塊檔案資料,但是資料讀不全

--讀取思路:

--開啟檔案獲取操作控制代碼

--讀入一段資料列印

--defer 開啟檔案控制代碼之後,立即定義關閉函式

--不論是 os.open() 還是 file.read 函式。返回的都有err,需要對err判斷是否被開啟 對err判斷是否讀取完畢

--func open(name string) (file *file, err error)

--open開啟乙個檔案用於開啟。返回物件為:

--file:檔案操作符,用於後續操作檔案

--err: 用於判斷

--**示例如下:

func main()

defer file.close() // 定義檔案關閉,以免忘記

// 通過控制代碼開啟檔案

var tmp = make(byte, 128)

n, err01 := file.read(tmp)

if err01 == io.eof

if err01 != nil

fmt.printf("讀取了%d位元組的資料\n", n)

fmt.println(string(tmp[:n]))

}

02、golang開啟檔案迴圈讀取:這是一次讀取一塊資料,全部檔案資料

func main()

defer file.close() // 定義檔案關閉,以免忘記

// 通過控制代碼開啟檔案

var content byte

var tmp = make(byte, 128)

forif err != nil

} fmt.println(string(content))

}

03、bufio讀取檔案 -- 逐行讀取

func main()

defer file.close() // 定義檔案關閉,以免忘記

// 開啟檔案

reader := bufio.newreader(file) // 獲取檔案位址

forfmt.println("檔案讀取完畢")

break

} if err != nil

fmt.println(line)

}}

04、ioutil -- 讀取整個檔案,只需要傳入檔案位址即可

// 開啟檔案讀入通道

content, err := ioutil.readfile("test.txt")

if err!=nil

fmt.println(string(content))

05、檔案寫入 --os.openfile()函式

--os.openfile()函式能夠以指定模式開啟檔案,從而實現檔案寫入相關功能。

func openfile(name string, flag int, perm filemode) (*file, error)

--name:要開啟的檔名

--flag:開啟檔案的模式

--perm:檔案許可權,乙個八進位制數。r(讀)04,w(寫)02,x(執行)01。在linux中就是檔案許可權,例如777。這個引數對於windows系統沒有意義

--模式有以下幾種:

模式 含義 -- 對應常數

os.o_wronly -- 只寫 -- 0x00001

os.o_create -- 建立檔案 -- 0x00040

os.o_rdonly -- 唯讀 -- 0x00000

os.o_rdwr -- 讀寫 -- 0x00002

os.o_trunc -- 清空 -- 0x00200

--在go語言中標誌位型別為int,通過標誌位之間的 | 操作,並按照二進位制位上的1來判斷有哪些模式被啟用

--如果檔案不存在且要寫入時,會報錯如下:

open file failed open write_in.txt: the system cannot find the file specified.

--write和writestring

--write:按照位元組寫入

--writestring:按照字串寫入

--**示例:

func main()

defer fileobj.close() // 關閉檔案

// write

fileobj.write(byte("不慚於景\n"))

// writestring

fileobj.writestring("慎其獨也")

}

--bufio.newwriter

--逐行讀入

--**示例:

func main()

defer fileobj.close() // 關閉檔案

writer := bufio.newwriter(fileobj)

for i := 0; i < 1000; i++

writer.flush() //將快取中的內容寫入檔案

}

--ioutil.writefile

--更加高階的寫入函式

--**示例如下:

str := "hello 沙河"

err := ioutil.writefile("./xx.txt", byte(str), 0666)

if err != nil

1 3Go語言環境

為了便於 學習與分享,建議各位大佬可以前往 github 免費註冊乙個賬戶,在此有很多優秀的go專案,可以較快的提高自己的開發能力。成功註冊github賬戶後,可以象下面這樣建立用於儲存 源 的資料夾 github賬戶名 macos或linux mkdir gopath src github.com...

Go 讀取和寫入xml檔案示例

在學習go語言中,有關於go處理xml檔案的處理.在這裡記錄一下 在go語言中使用ioutil庫進行檔案的處理是特別方便的事情,這裡使用goland進行開發的示例 首先建立工程xml 如下圖所示 在main.go中對a.xml 的內容進行讀取 a.xml 的內容如下 zh 深圳寶安 yq 深圳福田 ...

13 go語言 開始專案實戰

1 爬蟲專案介紹 網路爬蟲分類 通用爬蟲,如baidu,google 聚焦爬蟲,從網際網路獲取結構化資料 go語言的爬蟲庫 框架 henrylee2cn pholcus gocrawl colly hu17889 go spider 將不使用現成的爬蟲庫 框架 使用elasticsearch作為資料...