• 
    

      <address id="upfr9"><pre id="upfr9"><strike id="upfr9"></strike></pre></address>
      1. <address id="upfr9"><tr id="upfr9"></tr></address><dl id="upfr9"></dl>

        使用golang怎么創(chuàng)建、刪除與讀取文件-創(chuàng)新互聯(lián)

        今天就跟大家聊聊有關(guān)使用golang怎么創(chuàng)建、刪除與讀取文件,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

        余江ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

        golang的優(yōu)點(diǎn)

        golang是一種編譯語(yǔ)言,可以將代碼編譯為機(jī)器代碼,編譯后的二進(jìn)制文件可以直接部署到目標(biāo)機(jī)器而無(wú)需額外的依賴,所以golang的性能優(yōu)于其他的解釋性語(yǔ)言,且可以在golang中使用goroutine來(lái)實(shí)現(xiàn)并發(fā)性,它提供了一個(gè)非常優(yōu)雅的goroutine調(diào)度程序系統(tǒng),可以很容易地生成數(shù)百萬(wàn)個(gè)goroutine。

        文件目錄的創(chuàng)建和刪除

        package main
        
        import(
         "fmt"
         "os"
        )
        
        func main(){
         //創(chuàng)建目錄和權(quán)限
         os.Mkdir("./benben",0777)
         //創(chuàng)建多級(jí)目錄和設(shè)置權(quán)限
         os.MkdirAll("./benben/test",0777)
         //刪除目錄
         err:=os.Remove("./benben")
         if err!=nil{
         fmt.Println(err)
         }
         //刪除多級(jí)目錄
         os.RemoveAll("./benben")
        }

        文件的創(chuàng)建

        package main
        
        import (
         "os"
         "fmt"
        )
        
        func main(){
         //文件的創(chuàng)建,Create會(huì)根據(jù)傳入的文件名創(chuàng)建文件,默認(rèn)權(quán)限是0666
         file,err:=os.Create("a.txt")
         if err!=nil{
         fmt.Println(err)
         }
         defer file.Close()
        }

        文件的打開和關(guān)閉

        文件的打開和關(guān)閉相關(guān)函數(shù)在文件的讀取和寫入示例中演示。

        文件的讀取和寫入

        文件的讀取有以下幾種方式:

        方法一: 利用 os.Open() 和 ioutil.ReadAll() 兩個(gè)方法

        package main
        
        func main(){
         //打開文件
         file,err:=os.Open("a.txt")
         if err !=nil {
         fmt.Println(err)
         }
         //文件的關(guān)閉
         defer file.Close()
         //文件讀取方式一,通過(guò)os.Open返回一個(gè)文件句柄,然后利用它進(jìn)行讀取
         body,err:=ioutil.ReadAll(file)
         if err !=nil {
         fmt.Println(err)
         }
         fmt.Println(string(body))
        }

        方法二:利用 ioutil.ReadFile() 方法來(lái)實(shí)現(xiàn)讀取操作。

        package main
        
        func main(){
         body,err:=ioutil.ReadFile("a.txt")
         if err!=nil {
         fmt.Println(err)
         }
         fmt.Println(string(body))
        }

        ReadFile函數(shù)直接將方式一中的三個(gè)步驟分裝在了一起,下面是實(shí)現(xiàn)的具體代碼。

        func ReadFile(filename string)([]byte,error){
         //打開文件
         f,err:=os.Open(filename)
         if err!=nil {
         return nil,err
         }
         //延遲關(guān)閉文件
         defer f.Close()
        
         //設(shè)置讀取文件的字節(jié)數(shù)
         var n int64
         //Stat()方法會(huì)返回描述指定文件的信息結(jié)構(gòu)FileInfo
         if fi,err:=f.Stat();err==nil{
         if size:=fi.Size();size<1e9{
         n=size
         }
         }
        
         //返回讀取的文件內(nèi)容
         return readAll(f,n+bytes.MinRead)
        }

        FileInfo具有以下方法:

        Name() string //返回文件名
        Size() int64 //返回文件的字節(jié)長(zhǎng)度
        Mode() FileMode //文件模式位
        ModTime() time.Time //修改時(shí)間
        IsDir() bool //是否是目錄
        Sys() interface{} //底層數(shù)據(jù)源

        方法三: 帶緩存的讀取

        package main
        
        func main(){
         file,err:=os.Open("a.txt")
         if err!=nil {
         fmt.Println(err)
         }
         defer file.Close()
        
         //創(chuàng)建一個(gè)新的io.Reader,它實(shí)現(xiàn)了Read方法
         reader:=bufio.NewReader(file)
         //設(shè)置讀取的長(zhǎng)度
         buf:=make([]byte,1024)
         //讀取文件
         _,err=reader.Read(buf)
         if err!=nil {
         fmt.Println(err)
         }
         fmt.Println(string(buf))
        }

        文件的寫入

        方法一: 利用ioutil. Write File()

        package main
        
        import (
         "io/ioutil"
        )
        func main(){
         content:=[]byte("Go is an open source programming language that makes is easy to build simple,reliable,and efficient software)
         err:=ioutil.WriteFile("a.txt",content,0777)
         if err!=nil {
         fmt.Println(err)
         }
         fmt.Println("write file successful")
        }

        看看WriteFile具體是如何實(shí)現(xiàn)文件的寫入的。

        func WriteFile(filename string,data []byte,perm os.FileMode) error{
         //打開文件
         f,err:=os.OpenFile(filename,os.O_WRONLY|os.O_CREATE|os.O_TRUNC,perm)
         if err!=nil {
         return err
         }
         //文件的寫入
         n,err:=f.Write(data)
         if err==nil && n<len(data){
         err=io.ErrShortWrite
         }
         //關(guān)閉文件
         if err1:=f.Close();err==nil{
         err=err1
         }
         return err
        }

        方法二:打開文件,然后利用Write()進(jìn)行文件讀寫, 注意 :此時(shí)不能用os.Open()打開,而要用os.OpenFile()打開。 os.Open()和os.OpenFile()兩者區(qū)別

        package main
        
        func main(){
         file,err:=os.OpenFile("a.txt",os.O_RDWR|os.O_CREATE,0777)
         if err!=nil {
         fmt.Println(err)
         }
         defer file.Close()
        
         content:=[]byte("Go is an open source programing language that makes it easy to build simple,reliable,and efficient software")
         _,err=file.Write(content)
         if err!=nil {
         fmt.Println(err)
         }
         fmt.Println("write file successful")
        }

        方法三:通過(guò)有緩沖操作的bufio提供的包進(jìn)行操作

        如果使用Write方法實(shí)現(xiàn)寫操作,此時(shí)就還需要使用Flush()方法。 golang bufio包中的Write方法分析

        package main
        
        func main(){
         file,err:=os.OpenFile("a.txt", os.O_CREATE|os.O_RDWR, 0666)
         if err!=nil {
         fmt.Println(err)
         }
         defer file.Close()
        
         content:=[]byte("Go is an open source programing language that makes it easy to build simple,reliable,and efficient software")
         //使用NewWriter方法返回的io.Writer緩沖默認(rèn)大小為4096,也可以使用NewWriterSize方法設(shè)置緩存的大小
         newWriter:=bufio.NewWriter(file)
         //將文件寫入緩存
         if _,err =newWriter.Write(content);err!=nil {
         fmt.Println(err)
         }
         //從緩存寫入到文件中
         if err= newWriter.Flush(); err!=nil {
         fmt.Println(err)
         }
         fmt.Println("write file successful")
        }

        看完上述內(nèi)容,你們對(duì)使用golang怎么創(chuàng)建、刪除與讀取文件有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝大家的支持。

        另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

        名稱欄目:使用golang怎么創(chuàng)建、刪除與讀取文件-創(chuàng)新互聯(lián)
        網(wǎng)頁(yè)鏈接:http://www.jbt999.com/article18/ccppdp.html

        成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站策劃、全網(wǎng)營(yíng)銷推廣、用戶體驗(yàn)、網(wǎng)站營(yíng)銷App開發(fā)

        廣告

        聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

        h5響應(yīng)式網(wǎng)站建設(shè)

      2. 
        

          <address id="upfr9"><pre id="upfr9"><strike id="upfr9"></strike></pre></address>
          1. <address id="upfr9"><tr id="upfr9"></tr></address><dl id="upfr9"></dl>
            91精品国自产欧美在线观看 | 精品国产Av无码久久久影音先锋 | 人人看人人干 | 菠萝视频一区二区 | 五月丁香色婷婷基地 | 日韩无码黄色 | 国产做受91 一片二片老头 | 久久久久久大香蕉 | 西西人体444WWW无码男男 | 亚洲精品电影网 |