GO語(yǔ)言文件的創(chuàng)建與打開實(shí)例分析
本文實(shí)例分析了GO語(yǔ)言文件的創(chuàng)建與打開用法。分享給大家供大家參考。具體分析如下:
文件操作是個(gè)很重要的話題,使用也非常頻繁,熟悉如何操作文件是必不可少的。Golang 對(duì)文件的支持是在 os package 里,具體操作都封裝在 type File struct {} 結(jié)構(gòu)體中。
一、func Open(name string) (file *File, err error)
再簡(jiǎn)單不過(guò)了,給一個(gè)路徑給它,返回文件描述符,如果出現(xiàn)錯(cuò)誤就會(huì)返回一個(gè) *PathError。
這是一個(gè)只讀打開模式,實(shí)際上就是 os.OpenFile() 的快捷操作,它的原型如下:
return OpenFile(name, O_RDONLY, 0)
}
二、func OpenFile(name string, flag int, perm FileMode) (file *File, err error)
這個(gè)復(fù)雜點(diǎn),需要提供文件路徑、打開模式、文件權(quán)限。
打開標(biāo)記:
O_RDONLY:只讀模式(read-only)
O_WRONLY:只寫模式(write-only)
O_RDWR:讀寫模式(read-write)
O_APPEND:追加模式(append)
O_CREATE:文件不存在就創(chuàng)建(create a new file if none exists.)
O_EXCL:與 O_CREATE 一起用,構(gòu)成一個(gè)新建文件的功能,它要求文件必須不存在(used with O_CREATE, file must not exist)
O_SYNC:同步方式打開,即不使用緩存,直接寫入硬盤
O_TRUNC:打開并清空文件
文件權(quán)限(unix權(quán)限位):只有在創(chuàng)建文件時(shí)才需要,不需要?jiǎng)?chuàng)建文件可以設(shè)置為 0。os庫(kù)雖然提供常量,但是我一般直接寫數(shù)字,如0664。
如果你需要設(shè)置多個(gè)打開標(biāo)記和unix權(quán)限位,需要使用位操作符"|",示例代碼如下:
if err != nil {
panic(err)
}
如果文件存在就以讀寫模式打開,并追加寫入;如果文件不存在就創(chuàng)建,然后以讀寫模式打開。
三、func Create(name string) (file *File, err error)
實(shí)際上這也是 os.OpenFile() 的快捷操作。創(chuàng)建一個(gè)新文件并以讀寫方式打開,權(quán)限位"0666",如果文件存在則會(huì)清空。原型如下:
return OpenFile(name, O_RDWR|O_CREATE|O_TRUNC, 0666)
}
四、任何文件的打開操作,請(qǐng)記得及時(shí)釋放
f, err := os.Open(pth)
if err!=nil{
return err
}
defer f.Close() //釋放資源,時(shí)刻不忘
...
}
os 模塊中還有一個(gè) func NewFile(fd uintptr, name string) *File 函數(shù),使用給出的Unix文件描述符和名稱創(chuàng)建一個(gè)文件。參考:
Stdout = NewFile(uintptr(syscall.Stdout), "/dev/stdout")
Stderr = NewFile(uintptr(syscall.Stderr), "/dev/stderr")
希望本文所述對(duì)大家的GO語(yǔ)言程序設(shè)計(jì)有所幫助。
- 用go gin server來(lái)做文件上傳服務(wù)
- Golang+Android基于HttpURLConnection實(shí)現(xiàn)的文件上傳功能示例
- GO語(yǔ)言實(shí)現(xiàn)文件上傳代碼分享
- golang并發(fā)下載多個(gè)文件的方法
- Golang 使用http Client下載文件的實(shí)現(xiàn)方法
- Go語(yǔ)言下載網(wǎng)絡(luò)圖片或文件的方法示例
- GO語(yǔ)言常用的文件讀取方式
- Go語(yǔ)言判斷指定文件是否存在的方法
- 使用Go語(yǔ)言實(shí)現(xiàn)遠(yuǎn)程傳輸文件
- Go語(yǔ)言判斷文件或文件夾是否存在的方法
- golang語(yǔ)言實(shí)現(xiàn)的文件上傳與文件下載功能示例
相關(guān)文章
Go語(yǔ)言開發(fā)中有了net/http為什么還要有g(shù)in的原理及使用場(chǎng)景解析
這篇文章主要為大家介紹了Go語(yǔ)言有了net/http標(biāo)準(zhǔn)庫(kù)為什么還要有g(shù)in第三方庫(kù)的原理及使用場(chǎng)景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08golang中snappy的使用場(chǎng)合實(shí)例詳解
在java 和go語(yǔ)言 大字符傳達(dá)的時(shí)候, 采用snappy 壓縮 解壓縮是最好的方案。下面這篇文章主要給大家介紹了關(guān)于golang中snappy使用場(chǎng)合的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。2017-12-12viper配置框架的介紹支持zookeeper的讀取和監(jiān)聽
這篇文章主要介紹了viper配置框架的介紹支持zookeeper的讀取和監(jiān)聽,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05詳解Go語(yǔ)言中關(guān)于包導(dǎo)入必學(xué)的 8 個(gè)知識(shí)點(diǎn)
這篇文章主要介紹了詳解Go語(yǔ)言中關(guān)于包導(dǎo)入必學(xué)的 8 個(gè)知識(shí)點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08