版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 減脂服務(wù)培訓(xùn)課件
- 減肥公司培訓(xùn)課件
- 凌霄雙塔介紹
- 凈顏?zhàn)o(hù)膚知識(shí)培訓(xùn)課件
- 水電線路設(shè)備老化評(píng)估方案
- 冷鮮肉科普教學(xué)課件
- 《網(wǎng)頁(yè)設(shè)計(jì)與 Web 前端開(kāi)發(fā)》課件 第4章 使用HTML+CSS布局網(wǎng)頁(yè)
- 高原濕地生態(tài)寶庫(kù)探索三江源地區(qū)
- 測(cè)試題區(qū)分度優(yōu)化課件設(shè)計(jì)
- 八年級(jí)上冊(cè)人教版英語(yǔ)上課課件Unit8第課時(shí)(SectionAa-d)
- JTG-D40-2002公路水泥混凝土路面設(shè)計(jì)規(guī)范-PDF解密
- 《雅思閱讀精講》
- 產(chǎn)前檢查的操作評(píng)分標(biāo)準(zhǔn)
- 水廠及管網(wǎng)改擴(kuò)建工程施工節(jié)能降耗主要措施
- 2023-2024學(xué)年貴州省遵義市小學(xué)語(yǔ)文六年級(jí)期末評(píng)估測(cè)試題詳細(xì)參考答案解析
- 銷售心理學(xué)全集(2022年-2023年)
- 變態(tài)反應(yīng)課件
- 電力拖動(dòng)控制線路與技能訓(xùn)練-教案
- 50年同學(xué)聚會(huì)邀請(qǐng)函(十二篇)
- 單層21米高廠房鋼結(jié)構(gòu)施工方案
- 2022高三英語(yǔ)一模-普陀區(qū)解析-fixed
評(píng)論
0/150
提交評(píng)論