亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

Go 語言的文件操作

本文主要介紹 Go 語言中對(duì)文件系統(tǒng)的操作,Go 語言內(nèi)置庫中提供了豐富的文件操作函數(shù),所以本文主要介紹使用Go 語言中的內(nèi)置包——“os” 來實(shí)現(xiàn)文件操作。

 

1. 文件創(chuàng)建/打開

若你想創(chuàng)建/打開一個(gè)文件,則可以使用

代碼塊
  • 1? func OpenFile(name string, flag int, perm uint32) (file *File, err Error)

參數(shù)解釋:

  • name:就是文件名,若文件不在執(zhí)行程序目錄下,則可以使用文件的相對(duì)路徑或者絕對(duì)路徑。
  • flag:是文件打開模式,其支持模式共有(O_RDONLY|O_WRONLY|O_RDWR三個(gè)中必須要選一個(gè)):
    • O_RDONLY:以只讀方式打開文件;
    • O_WRONLY:以只寫方式打開文件;
    • O_RDWR:以讀寫方式打開文件;
    • O_APPEND:寫入時(shí)將數(shù)據(jù)追加到文件;
    • O_CREATE:如果不存在新文件,則創(chuàng)建一個(gè)新文件;
    • O_EXCL:與O_CREATE一起使用,文件不能存在;
    • O_SYNC:為同步I/O打開;
    • O_TRUNC:打開時(shí)截?cái)喑R?guī)可寫文件;
  • perm:文件權(quán)限,一般最高為0777。

代碼示例

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"
  • 5? ? ? ? ? "os"
  • 6? )
  • 7
  • 8? func main() {
  • 9? ? ? ? ? f, err := os.OpenFile("a.txt", os.O_RDWR|os.O_CREATE, 0777)
  • 10? ? ? ? if err != nil {
  • 11? ? ? ? ? ? ? ? panic(err)
  • 12? ? ? ? }
  • 13? ? ? ? fmt.Println(f.Name())
  • 14? }
  • 第 9 行:以讀寫的方式打開一個(gè)名為a.txt的文件,若文件不存在則創(chuàng)建這個(gè)文件,文件權(quán)限為0777;
  • 第 13 行:打印這個(gè)文件名;

執(zhí)行結(jié)果:

圖片描述

 

2. 文件讀取

文件打開之后,就可以從得到的文件對(duì)象中讀取文件內(nèi)容。我們?cè)?a.txt 文件中輸入?file test?字符串,來驗(yàn)證讀取結(jié)果。

代碼示例:

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"
  • 5? ? ? ? ? "os"
  • 6? )
  • 7
  • 8? func main() {
  • 9? ? ? ? ? f, err := os.OpenFile("a.txt", os.O_RDWR|os.O_CREATE, 0777)
  • 10? ? ? ? if err != nil {
  • 11? ? ? ? ? ? ? ? panic(err)
  • 12? ? ? ??}
  • 13? ? ? ? b := make([]byte, 10) //最大讀取字符數(shù)量
  • 14? ? ? ? i, err := f.Read(b)
  • 15? ? ? ? if err != nil {
  • 16? ? ? ? ? ? ? ? panic(err)
  • 17? ? ? ? }
  • 18? ? ? ? fmt.Println(i) //輸出讀取的字符串的個(gè)數(shù)
  • 19? ? ? ? fmt.Println(string(b)) //輸出讀取到的字符串
  • 20? }

執(zhí)行結(jié)果:

圖片描述

 

3. 文件寫入

文件寫入有兩種模式,追加模式和覆寫模式。如果在打開文件的時(shí)候加上了?O_APPEND 模式,就是追加,如果不加就是覆寫。

代碼示例:

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "os"
  • 5? )
  • 6
  • 7? func main() {
  • 8? ? ? ? ? f1, err := os.OpenFile("a.txt", os.O_RDWR|os.O_CREATE, 0777)
  • 9? ? ? ? ? if err != nil {
  • 10? ? ? ? ? ? ? ? ? panic(err)
  • 11? ? ? ? }
  • 12? ? ? ? f1.WriteString("覆寫字符")
  • 13? ? ? ? f1.Close()
  • 14
  • 15? ? ? ? f2, err := os.OpenFile("b.txt", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0777)//追加模式打開文件
  • 16? ? ? ? if err != nil {
  • 17? ? ? ? ? ? ? ? ? panic(err)
  • 18? ? ? ? }
  • 19? ? ? ? f2.WriteString("追加字符")
  • 20? }

反復(fù)執(zhí)行幾遍上述代碼,然后打開兩個(gè)文件,文件內(nèi)容如下:

覆寫的文件中只有"覆寫字符"這四個(gè)字,因?yàn)槠鋵懭氡徊粩喔矊懥恕?/p>

圖片描述

追加的文件中有很多"追加字符",因?yàn)槠鋵懭胧遣粩嗟谋蛔芳拥轿募┪驳摹?/p>

圖片描述

 

4. 小結(jié)

本文主要介紹了 Go 語言中自帶的 os 包的文件操作,需要注意的是文件的打開中若不確定文件是否存在,就可以加上 O_CREATE。改寫文件若是需要追加到文件末尾,記得在打開文件的時(shí)候要加上 O_APPEND。

上一節(jié)

文章來源于網(wǎng)絡(luò),侵刪!

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!