1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢(xún)
      選擇下列產(chǎn)品馬上在線(xiàn)溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
      Go語(yǔ)言碎片整理之文件操作-創(chuàng)新互聯(lián)

      文件是什么?
      計(jì)算機(jī)中的文件是存儲(chǔ)在外部介質(zhì)(通常是磁盤(pán))上的數(shù)據(jù)集合,文件分為文本文件和二進(jìn)制文件。

      目前累計(jì)服務(wù)客戶(hù)成百上千,積累了豐富的產(chǎn)品開(kāi)發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹(shù)立企業(yè)形象,為客戶(hù)提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷(xiāo)、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。創(chuàng)新互聯(lián)始終以務(wù)實(shí)、誠(chéng)信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過(guò)對(duì)領(lǐng)先技術(shù)的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究、對(duì)客戶(hù)形象的視覺(jué)傳遞、對(duì)應(yīng)用系統(tǒng)的結(jié)合,為客戶(hù)提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶(hù),共同發(fā)展進(jìn)步。

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

      os.Open()函數(shù)能夠打開(kāi)一個(gè)文件,返回一個(gè)*File和一個(gè)error。對(duì)得到的文件實(shí)例調(diào)用close()方法能夠關(guān)閉文件。

      func main(){
          file,err := os.Open("./main.go")
          if err != nil{
              fmt.Println("open file failed!,err",err)
              return 
          }
          fmt.Println("cool!")
          file.Close()
      }

      為了防止文件忘記關(guān)閉,我們通常使用defer注冊(cè)文件關(guān)閉語(yǔ)句。

      讀取文件

      file.Read()

      基本使用

      Read的方法定義如下:
      func(f *File) Read(b []byte)(n int, err error)
      它接收一個(gè)字節(jié)切片,返回讀取的字節(jié)數(shù)和可能的具體錯(cuò)誤,讀到文件末尾時(shí)會(huì)返回0和io.EOF。

      package main
      import (
          "fmt"
          "os"
          "io"
      )
      func main(){
          file,err := os.Open("./main.go")
          if err != nil{
              fmt.Println("open file failed!,err", err)
              return 
          }
          defer file.Close()
          var tmp = make([]byte,128)
          n, err := file.Read(tmp)
          if err == io.EOF {
              fmt.Println("文件讀完了")
              return
          }
          if err != nil{
              fmt.Println("read file failed,err",err)
              return 
          }
          fmt.Printf("讀取了%d的字節(jié)數(shù)據(jù)\n",n)
          fmt.Println(string(tmp[:n]))
      }

      循環(huán)讀取

      使用for循環(huán)讀取文件中的所有數(shù)據(jù)。

      package main
      import (
          "fmt"
          "os"
          "io"
      )
      func main(){
          file, err := os.Open("./main.go")
          if err != nil {
              fmt.Println("open file failed!, err", err)
              return 
          }
          defer file.Close()
          var content []byte
          var tmp = make([]byte,128)
          for {
              n ,err := file.Read(tmp)
              if err == io.EOF{
                  fmt.Println("文件讀完了")
                  break
              }
              if err != nil{
                  fmt.Println("read file failed,err",err)
                  return
              }
              content = append(content,tmp[:n]...)
      
          }
          fmt.Println(string(content))
      }

      bufio讀取文件

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

      package main
      import (
          "fmt"
          "os"
          "io"
          "bufio"
      )
      func main(){
          file , err := os.Open("./main.go")
          if err != nil{
              fmt.Println("open file failed,err",err)
              return
          }
          defer file.Close()
          reader := bufio.NewReader(file)
          for {
              line, err := reader.ReadString('\n')
              if err == io.EOF{
                  fmt.Println("文件讀完了")
                  break
              }
              if err != nil{
                  fmt.Println("read file failed!,err",err)
                  return
              }
              fmt.Println(line)
          }
      }
      使用ioutil讀取整個(gè)文件

      io/ioutil包的ReadFile方法能夠讀取完整的文件,只需要將文件名作為參數(shù)傳入。

      package main
      import (
          "fmt"
          "io/ioutil"
      )
      func main(){
          content, err := ioutil.ReadFile("./main.go")
          if err != nil{
              fmt.Println("read file failed,err:",err)
              return 
      
          }
          fmt.Println(string(content))
      }

      文件寫(xiě)入操作

      os.OpenFile()函數(shù)能夠以指定的模式打開(kāi)文件,從而實(shí)現(xiàn)文件寫(xiě)入相關(guān)功能。

      func OpenFile(name string, flag int, perm FileMode) (*File, error){
          ....
      }

      其中:
      name 是指要打開(kāi)的文件名,flag是指打開(kāi)文件的模式,模式有以下幾種:

      Go語(yǔ)言 碎片整理之 文件操作
      perm 文件權(quán)限,一個(gè)八進(jìn)制數(shù)。r(讀)04 ,w(寫(xiě))02,x(執(zhí)行)01。

      Write和WriteString
      func main() {
          file, err := os.OpenFile("xx.txt", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666)
          if err != nil {
              fmt.Println("open file failed, err:", err)
              return
          }
          defer file.Close()
          str := "hello 沙河"
          file.Write([]byte(str))       //寫(xiě)入字節(jié)切片數(shù)據(jù)
          file.WriteString("hello 小王子") //直接寫(xiě)入字符串?dāng)?shù)據(jù)
      }
      bufio.NewWriter
      import (
          "io"
              "fmt"
      )
      func main() {
          file, err := os.OpenFile("xx.txt", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666)
          if err != nil {
              fmt.Println("open file failed, err:", err)
              return
          }
          defer file.Close()
          writer := bufio.NewWriter(file)
          for i := 0; i < 10; i++ {
              writer.WriteString("hello沙河\n") //將數(shù)據(jù)先寫(xiě)入緩存
          }
          writer.Flush() //將緩存中的內(nèi)容寫(xiě)入文件
      }
      ioutil.WriteFile
      func main() {
          str := "hello 沙河"
          err := ioutil.WriteFile("./xx.txt", []byte(str), 0666)
          if err != nil {
              fmt.Println("write file failed, err:", err)
              return
          }
      }

      練習(xí)

      copyFile
      func CopyFile(dstName, srcName string)(written int64,err error){
          src,err := os.Open(srcName)
          if err != nil{
              fmt.Printf("open %s failed,err: %v.\n", srcName,err)
              return
          }
          defer src.Close()
          dst ,err := os.OpenFile(dstName,os.O_CREATE|os.O_WRONLY,0644)
          if err != nil{
              fmt.Printf("open %s failed,err:%v.\n",dstName,err)
              return 
          }
          defer dst.Close()
          return io.Copy(dst,src)
      }
      func main(){
          _,err := CopyFile("dst.txt","src.txt")
          if err != nil{
              fmt.Println("copy file failed,err",err)
              return 
          }
          fmt.Println("Copy done!")
      }

      創(chuàng)新互聯(lián)www.cdcxhl.cn,專(zhuān)業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買(mǎi)多久送多久。


      分享名稱(chēng):Go語(yǔ)言碎片整理之文件操作-創(chuàng)新互聯(lián)
      當(dāng)前URL:http://ef60e0e.cn/article/djiegs.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        日照市| 扶绥县| 绵阳市| 安福县| 大庆市| 涟水县| 黔南| 理塘县| 大冶市| 准格尔旗| 秦皇岛市| 琼中| 古浪县| 剑川县| 柳河县| 新疆| 钦州市| 张家界市| 方正县| 镇康县| 湖州市| 承德县| 凤台县| 安多县| 晋江市| 黔江区| 黄浦区| 扎鲁特旗| 南投县| 航空| 太和县| 武邑县| 沈阳市| 泸水县| 盖州市| 耿马| 秦安县| 额尔古纳市| 呼和浩特市| 凯里市| 阿克陶县|