一文搞懂Go語(yǔ)言中文件的讀寫與創(chuàng)建_第1頁(yè)
一文搞懂Go語(yǔ)言中文件的讀寫與創(chuàng)建_第2頁(yè)
一文搞懂Go語(yǔ)言中文件的讀寫與創(chuàng)建_第3頁(yè)
一文搞懂Go語(yǔ)言中文件的讀寫與創(chuàng)建_第4頁(yè)
一文搞懂Go語(yǔ)言中文件的讀寫與創(chuàng)建_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第一文搞懂Go語(yǔ)言中文件的讀寫與創(chuàng)建目錄1.文件的打開(kāi)與關(guān)閉1.1os.open1.2os.OpenFile()指定模式打開(kāi)文件2.文件的讀取2.1打開(kāi)文件的方式讀取文件中的數(shù)據(jù)2.2使用bufio整行讀取文件3.寫入文件操作3.1file.Write與file.WriteString3.2bufio.NewWriter3.3ioUtil工具類

1.文件的打開(kāi)與關(guān)閉

1.1os.open

os.open函數(shù)能打開(kāi)一個(gè)文件調(diào)用close()方法關(guān)閉文件

//打開(kāi)文件

open,err:=os.Open("./1.text")

iferr!=nil{

//打印異常信息

fmt.Println("openfileerr",err)

fmt.Println("文件獲取完畢")

//沒(méi)有出現(xiàn)異常,關(guān)閉文件

open.Close()

為了防止忘記關(guān)閉文件,通常都將關(guān)閉文件的代碼寫在defer中

//打開(kāi)文件

open,err:=os.Open("./1.text")

deferfunc(){

ifopen!=nil{

//關(guān)閉文件

open.Close()

iferr!=nil{

//打印異常信息

fmt.Println("openfileerr",err)

fmt.Println("文件獲取完畢")

1.2os.OpenFile()指定模式打開(kāi)文件

funcOpenFile(namestring,flagint,permFileMode)(*File,error){

其中:

name:要打開(kāi)的文件名flag:打開(kāi)文件的模式。模式有以下幾種:

模式含義os.O_WRONLY只寫os.O_CREATE創(chuàng)建文件os.O_RDONLY只讀os.O_RDWR讀寫os.O_TRUNC清空os.O_APPEND追加

perm:文件權(quán)限,一個(gè)八進(jìn)制數(shù)。r(讀)04,w(寫)02,x(執(zhí)行)01。

2.文件的讀取

2.1打開(kāi)文件的方式讀取文件中的數(shù)據(jù)

//首先需要打開(kāi)一個(gè)文件

open,err:=os.Open("./1.text")

deferfunc(){

e:=recover()

ife!=nil{

fmt.Println("打開(kāi)文件出現(xiàn)了異常",e)

iferr!=nil{

//如果有異常沒(méi)必要往下走了拋出

panic(err)

//如果沒(méi)有異常

//創(chuàng)建字節(jié)切片

bytes:=make([]byte,1024)

deferfunc(){

e:=recover()

ife!=nil{

fmt.Println("讀取文件出現(xiàn)了異常",e)

for{

//循環(huán)讀

_,err:=open.Read(bytes)

iferr!=nil{

panic(err)

//打印結(jié)果

fmt.Println(string(bytes))

2.2使用bufio整行讀取文件

bufio是在file的基礎(chǔ)上封裝了一層API,支持更多的功能

//同樣的首先打開(kāi)一個(gè)文件

file,err:=os.Open("./1.text")

deferrecover()

iferr!=nil{

panic("文件打開(kāi)出現(xiàn)異常")

//封裝為bufio

reader:=bufio.NewReader(file)

deferrecover()

for{

//讀到指定字符串換一行

line,_,err:=reader.ReadLine()

iferr!=nil{

iferr==io.EOF{

fmt.Println("文件讀寫完畢")

break

panic("文件讀取出現(xiàn)異常")

fmt.Println(string(line))

fmt.Println("程序運(yùn)行結(jié)束")

funcmain(){

file,err:=os.OpenFile("xx.txt",os.O_CREATE|os.O_TRUNC|os.O_WRONLY,0666)

3.寫入文件操作

無(wú)論是文件讀取還是文件寫入都是需要先打開(kāi)文件再進(jìn)行操作

3.1file.Write與file.WriteString

//首先打開(kāi)文件O_RDWR讀寫權(quán)限O_TRUNC清空文件0開(kāi)頭表示八進(jìn)制666表示當(dāng)用用戶當(dāng)前組其他用戶都是可讀可寫權(quán)限

file,err:=os.OpenFile("1.text",os.O_RDWR|os.O_TRUNC,0666)

iferr!=nil{

fmt.Printf("打開(kāi)文件出現(xiàn)異常%v",err)

deferfile.Close()

//返回寫入的字節(jié)數(shù)

write,err:=file.Write([]byte("測(cè)試文件寫入\n"))

file.WriteString("一次寫入整個(gè)字符串")

iferr!=nil{

fmt.Println(err)

fmt.Println(write)

3.2bufio.NewWriter

//基于緩存操作

file,err:=os.OpenFile("2.text",os.O_CREATE|os.O_WRONLY|os.O_TRUNC,0666)

iferr!=nil{

panic(err)

deferfunc(){

file.Close()

ife:=recover();e!=nil{

fmt.Printf("異常:打開(kāi)文件出現(xiàn)異常%v",e)

//使用bufio基于緩存操作io流

//需要傳入一個(gè)io接口包下的Writer接口實(shí)現(xiàn)類而file實(shí)現(xiàn)了該方法

writer:=bufio.NewWriter(file)

writer.WriteString("寫入緩存字符串內(nèi)容2")

//需要將緩存中的數(shù)據(jù)刷新到硬盤上

writer.Flush()

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論