亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Golang > 正文

Go語言編程中對(duì)文件讀寫的基本方法整理

2020-04-01 19:25:23
字體:
供稿:網(wǎng)友
這篇文章主要介紹了Go語言編程中對(duì)文件讀寫的基本方法整理,是Go語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
 

1.func Copy(dst Writer, src Reader) (written int64, err error)這個(gè)函數(shù)是從一個(gè)文件讀取拷貝到另外一個(gè)文件,一直拷貝到讀取文件的EOF,所以不會(huì)返回io.EOF錯(cuò)誤,參數(shù)是寫入目標(biāo)器和讀取目標(biāo)器,返回int64的拷貝字節(jié)數(shù)和err信息

 

復(fù)制代碼代碼如下:

import (
 "fmt"
 "io"
 "os"
)

 

func main() {
 r, _ := os.Open("test.txt")
 w, _ := os.Create("write.txt")
 num, err := io.Copy(w, w)
 if err != nil {
  fmt.Println(err)
 }
 fmt.Println(num) //返回int64的11 打開我的write.txt正是test.txt里邊的hello widuu

 


 

2.func CopyN(dst Writer, src Reader, n int64) (written int64, err error)看函數(shù)就知道了跟上述的是一樣的,只是多加了一個(gè)讀取數(shù)的限制,然后我們看下代碼

復(fù)制代碼代碼如下:

import (
 "fmt"
 "io"
 "io/ioutil"
 "os"
)

 

func main() {
 r, _ := os.Open("test.txt")
 w, _ := os.Create("write1.txt")
 num, err := io.CopyN(w, r, 5)
 if err != nil {
  fmt.Println(err)
 }
 defer r.Close()
 b, _ := ioutil.ReadFile("write1.txt")
 fmt.Println(string(b)) //輸出 hello
 fmt.Println(num)       //5
}

 


 

3.func ReadAtLeast(r Reader, buf []byte, min int) (n int, err error)這個(gè)函數(shù)就是從讀取器中讀取數(shù)據(jù)放到我們的buf中,限定了最小的讀取字節(jié)數(shù),如果我們讀取的數(shù)據(jù)小于最小讀取器,譬如你設(shè)定min的值是8,但是你讀取的數(shù)據(jù)字節(jié)數(shù)是5就會(huì)返回一個(gè)`io.ErrUnexpectedEOF`,如果大于就會(huì)返回`io.ErrShortBuffer`,讀取完畢會(huì)有`io.EOF`~~,多講一些哈,這個(gè)Reader只要我們滿足這個(gè)interface就可以用這個(gè)

復(fù)制代碼代碼如下:

type Reader interface {
    Read(p []byte) (n int, err error)
}

 

 


其中*File就支持func (f *File) Read(b []byte) (n int, err error)

 

 

復(fù)制代碼代碼如下:

import (
 "fmt"
 "io"
 "os"
)

 

func main() {
 r, _ := os.Open("write1.txt")
 b := make([]byte, 20)
 defer r.Close()
 var total int
 for {
  n, err := io.ReadAtLeast(r, b, 8)
  if err == nil {
   fmt.Println("Read enough value:", string(b)) // Read enough value: hello widuu
  }
  if err == io.ErrUnexpectedEOF { //讀取了的數(shù)據(jù)小于我們限定的最小讀取數(shù)據(jù)8
   fmt.Println("Read fewer value:", string(b[0:n]))
  }
  
  if err == io.ErrShortBuffer{   //這個(gè)是我們?cè)O(shè)定的buf也就是b小于我們限定8
   fmt.Println("buf too Short")
   os.Exit(1)
  }
  if err == io.EOF { //讀完了 輸出
   fmt.Println("Read end total", total) //Read end total 11
   break
  }
  total = total + n
 }
}

 


 

4.func ReadFull(r Reader, buf []byte) (n int, err error)這個(gè)函數(shù)和上邊的函數(shù)是相似,只不過是讀取len(buf)個(gè),放在buf中

 

復(fù)制代碼代碼如下:

 

import (
 "fmt"
 "io"
 "os"
)

func main() {
 r, _ := os.Open("write.txt")
 b := make([]byte, 20)
 num, err := io.ReadFull(r, b)
 defer r.Close()
 if err == io.EOF {
  fmt.Println("Read end total", num)
 }
 if err == io.ErrUnexpectedEOF {
  fmt.Println("Read fewer value:", string(b[:num])) //Read fewer value: hello widuu,依然是buf長(zhǎng)度大于讀取的長(zhǎng)度
  return
 }

 fmt.Println("Read  value:", string(b)) //如果b是5 就出現(xiàn)這里
}

 


 

5.func WriteString(w Writer, s string) (n int, err error)弄完讀了,當(dāng)然帶要寫了,這個(gè)函數(shù)主要是向?qū)懭肽繕?biāo)中寫入字符創(chuàng),返回是寫入的字節(jié)數(shù)還有error錯(cuò)誤,主要是權(quán)限的錯(cuò)誤,其中寫入呀!都是writer這個(gè)結(jié)構(gòu)就可以寫入

 

復(fù)制代碼代碼如下:

 

type Writer interface {
    Write(p []byte) (n int, err error)
}
跟read一樣我們的*File是有func (f *File) Write(b []byte) (n int, err error),當(dāng)然其實(shí)我們的*File中就已經(jīng)有WirteString了func (f *File) WriteString(s string) (ret int, err error)
import (
 "fmt"
 "io"
 "io/ioutil"
 "os"
)

func main() {
 w, _ := os.OpenFile("write1.txt", os.O_RDWR, os.ModePerm)
 n, err := io.WriteString(w, "ni hao ma")
 if err != nil {
  fmt.Println(err) //當(dāng)我用os.open()的時(shí)候木有權(quán)限  悲催的~~輸出write write1.txt: Access is denied.
 }
 defer w.Close()
 b, _ := ioutil.ReadFile("write1.txt")
 fmt.Println("write total", n) //write total 9
 fmt.Println(string(b))        // ni hao ma
}

 


 

6.type LimitedReader

 

復(fù)制代碼代碼如下:

 

type LimitedReader struct {
    R Reader // 讀取器了
    N int64  // 最大字節(jié)限制
}

 


只實(shí)現(xiàn)了一個(gè)方法func (l *LimitedReader) Read(p []byte) (n int, err error)其實(shí)我們不難發(fā)現(xiàn)這個(gè)跟我們的ReadAtLast()就是親兄弟的節(jié)奏

 

 

復(fù)制代碼代碼如下:

import (
 "fmt"
 "io"
 "os"
)

 

func main() {
 reader, _ := os.Open("test.txt")
 limitedreader := io.LimitedReader{
  R: reader,
  N: 20,
 }
 p := make([]byte, 10)
 var total int
 for {
  n, err := limitedreader.Read(p)
  if err == io.EOF {
   fmt.Println("read total", total)     //read total 11
   fmt.Println("read value", string(p)) //read value hello widuu
   break
  }
  total = total + n

 }

}

 


 

7.type PipeReader

 

復(fù)制代碼代碼如下:

type PipeReader struct {
    // contains filtered or unexported fields
}

 

 


(1)func Pipe() (*PipeReader, *PipeWriter)創(chuàng)建一個(gè)管道,并返回它的讀取器和寫入器,這個(gè)會(huì)在內(nèi)存中進(jìn)行管道同步,它的開啟會(huì)io.Reader然后等待io.Writer的輸入,沒有內(nèi)部緩沖,它是安全的調(diào)用Read和Write彼此和并行調(diào)用寫

 

 

復(fù)制代碼代碼如下:

 

import (
 "fmt"
 "io"
 "reflect"
)

func main() {
 r, w := io.Pipe()
 fmt.Println(reflect.TypeOf(r)) //*io.PipeReader
 fmt.Println(reflect.TypeOf(w)) //*io.PipeWriter
}

 


(2)func (r *PipeReader) Close() error管道關(guān)閉后,正在進(jìn)行或后續(xù)的寫入Write操作返回ErrClosedPipe
復(fù)制代碼代碼如下:

import (
 "fmt"
 "io"
)

 

func main() {
 r, w := io.Pipe()
 r.Close()

 _, err := w.Write([]byte("hello widuu")) 

 if err == io.ErrClosedPipe {
  fmt.Println("管道已經(jīng)關(guān)閉無法寫入") //管道已經(jīng)關(guān)閉無法寫入
 }
}

 


(3)func (r *PipeReader) CloseWithError(err error) error這個(gè)就是上邊的r.Close關(guān)閉的時(shí)候,寫入器會(huì)返回錯(cuò)誤的信息

 

 

復(fù)制代碼代碼如下:

 

import (
 "errors"
 "fmt"
 "io"
)

func main() {
 r, w := io.Pipe()
 r.Close()
 err := errors.New("管道符關(guān)閉了") //errors這個(gè)包我們前邊已經(jīng)說過了,就一個(gè)方法New不會(huì)的可以看看前邊的
 r.CloseWithError(err)
 _, err = w.Write([]byte("test"))
 if err != nil {
  fmt.Println(err) //管道符關(guān)閉了
 }
}

 


(4)func (r *PipeReader) Read(data []byte) (n int, err error)標(biāo)準(zhǔn)的閱讀接口,它從管道中讀取數(shù)據(jù)、阻塞一直到一個(gè)寫入接口關(guān)閉,如果寫入端發(fā)生錯(cuò)誤,它就會(huì)返回錯(cuò)誤,否則返回的EOF

 

 

復(fù)制代碼代碼如下:

import (
 "fmt"
 "io"
)

 

func main() {
 r, w := io.Pipe()
 go w.Write([]byte("hello widuu"))
 d := make([]byte, 11)
 n, _ := r.Read(d) //從管道里讀取數(shù)據(jù)
 fmt.Println(string(d))
 fmt.Println(n)
}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
亚洲综合激情六月婷婷在线观看| 亚洲午夜久久久久久尤物| 国产精品片aa在线观看| 日本免费高清一区二区| 精品国产一区二区三区av片| 日韩欧美亚洲国产精品字幕久久久| 九9re精品视频在线观看re6| 伊人久久大香线蕉综合热线| 夫妻免费无码v看片| 亚洲丰满少妇videoshd| 国产欧美自拍一区| 国产精品永久免费| 国产人妖一区| 成人精品久久一区二区三区| 婷婷亚洲婷婷综合色香五月| 在线精品一区二区三区| 欧美黄网站在线观看| 亚洲成人在线观看视频| 日韩美女写真福利在线观看| 在线观看入口黄最新永久免费国产| 91久久精品www人人做人人爽| 日韩黄色三级在线观看| 9l视频自拍9l视频自拍| 亚洲a在线播放| 男女高潮又爽又黄又无遮挡| 亚洲性视频h| 日本一级片在线播放| 中文字幕一区三区久久女搜查官| 麻豆最新免费在线视频| 国产在线播放一区二区三区| 免费成人av电影| 亚洲日本视频在线| 国产精品久久久久久久久图文区| 免费精品99久久国产综合精品| 国产精品欧美激情| 欧美综合视频在线观看| 思思99re6国产在线播放| 亚洲精品一区二区在线看| 不卡的av在线播放| 国语自产精品视频在线看8查询8| 日本美女黄色一级片| 国产精品久久久久久亚洲色| 福利视频久久| 狠狠入ady亚洲精品经典电影| 久久这里有精品15一区二区三区| 香蕉视频免费网站| 91免费看蜜桃| 7878成人国产在线观看| 韩国一区二区三区| 日韩一区二区三区xxxx| 九九热免费在线视频| 教室别恋欧美无删减版| 亚洲最大福利视频| 嗯~啊~轻一点视频日本在线观看| av中文字幕在线播放| 中文字幕免费精品| 国产日韩欧美麻豆| 精品人伦一区二区三区蜜桃网站| 妖精视频一区二区三区| 亚洲国产aⅴ精品一区二区三区| 99在线视频影院| 精品国产亚洲一区二区三区在线| 国产精品狠色婷| 日韩精品无码一区二区三区久久久| 亚洲欧美在线视频| 国产资源在线观看入口av| 国产性猛交普通话对白| 欧美91福利在线观看| 久久久久久久久久久99| 天天躁日日躁狠狠躁超碰2020| 亚洲一区在线电影| 97免费高清电视剧观看| 福利网站在线观看| 欧美日韩精品免费观看视一区二区| 奇米色欧美一区二区三区| 中文字幕一区二区三区在线播放| 国产精品igao网网址不卡| 天天看片中文字幕| 日本精品一区二区三区在线播放| 亚洲乱码日产精品bd在线观看| www在线观看免费| 亚洲午夜电影网| av一区在线播放| 亚洲人辣妹窥探嘘嘘| 日本精品www| 午夜cr在线观看高清在线视频完整版| 国产人妖伪娘一区91| 亚洲精品影院| 激情懂色av一区av二区av| 国产午夜精品一区在线观看| 一区二区三区高清不卡| 日本高清不卡一区| 成人不用播放器| 精品国内二区三区| 一区二区三区电影大全| 欧美视频亚洲图片| 97超碰国产精品| 色网在线播放| 麻豆精品密在线观看| av男人天堂av| 免费污污视频在线观看| 57pao成人国产永久免费| 亚洲 欧美 精品| 亚洲视屏在线播放| 国产激情在线观看| 国产一区导航| 国产精品sss在线观看av| 欧美中文字幕一区二区三区亚洲| www.欧美日韩国产在线| 久久不射2019中文字幕| 日本在线播放| 亚洲精品欧美精品| 国产视频高清免费| 中文字幕中文字幕精品| 91麻豆视频网站| 在线看的av| 蜜臀91精品国产高清在线观看| 欧美成人黄色| 伊人情人综合网| 亚洲精品乱码久久| 中文字幕69页| 亚洲 欧美 日韩 综合| 中文在线天堂网| 香蕉青柠影院| 亚洲天堂av在线播放| 香蕉成人伊视频在线观看| 黄色免费视频观看| 9色在线观看| 136福利视频导航| 一区二区免费视频| 成人午夜视频在线| 中文字幕 日韩 欧美| 欧美在线观看视频网站| 91麻豆国产福利在线观看| 污视频软件在线观看| 最新四虎影在线在永久观看www| 中文在线а天堂av| 国产黄色的视频| 五月天婷婷基地| 国产一区二区三区香蕉| 日本中文字幕一区| 欧美日韩国产一区| 亚洲欧洲午夜一线一品| 中文字幕亚洲一区二区三区| 我不卡一区二区| 91久久夜色精品国产按摩| 日韩精品中文字幕在线播放| 欧美经典三级视频一区二区三区| 精品99re| 国产美女高潮| 人人在线视频| 精品一区二区三区日韩| 国产伦精品一区二区三区视频网站| 日韩欧美第一区| 先锋影音在线资源站91| 久久99最新地址| 波多野结衣av在线观看| 一本一道久久久a久久久精品91| 日韩精品欧美成人高清一区二区| 免费观看v片在线观看| 女同性恋一区二区| 大荫蒂欧美视频另类xxxx| 在线电影欧美日韩一区二区私密| 亚洲第一黄色网址| 俄罗斯毛片基地| 欧美精品一区二区三区一线天视频| 欧美网站免费观看| 国产女人免费看a级丨片| 黄色三级电影网站| 成人在线播放视频| 天天天天天天操| 国产一区二区视频播放| 午夜婷婷在线观看| 欧美精品videos另类| 国产精品精品久久久久久| 亚洲老女人视频免费| 国产乱码久久久久久| av在线三区| 午夜免费视频网站| 女人十八毛片嫩草av| 欧美精品一区二区三区蜜桃| 美女被艹视频网站| 亚洲自拍偷拍区| 福利视频一区二区三区四区| www.色呦呦| 亚洲精品成人三区| 成人午夜短视频| 女人让男人操自己视频在线观看| 三级视频在线| 国产在线观看免费视频软件| 超碰成人av| 欧美日韩国产经典色站一区二区三区| 欧美日韩1区2区3区| 久草视频免费在线| 久久久久久久久久久福利| 国产日韩在线观看av| 久久久久亚洲天堂| 亚洲成人黄色网址| 欧美三级电影在线播放| 欧美成人剧情片在线观看| 久久这里精品国产99丫e6| 蜜桃视频成人在线观看| 天天干天天玩天天操| 2020国产在线| 国产美女无遮挡永久免费| 久久要要av| 一个人看的www一区| 国产精品自拍在线观看| 高清成人在线| 国产乱叫456在线| 国产在线精品国自产拍免费| 黑人精品无码一区二区三区AV| 91精品国产自产精品男人的天堂| 亚洲精品电影在线观看| 一二三区在线观看| 国产综合亚洲精品一区二| 日本动漫理论片在线观看网站| 宅男视频免费在线观看视频| 婷婷激情综合| 色一情一乱一乱一区91| 国产精品视频一区二区三区麻豆| 高清视频一区| 午夜精品一区二区三区在线观看| 国产l精品国产亚洲区在线观看| 粉嫩一区二区三区在线看| 午夜免费福利网站| 精品人妻一区二区三区三区四区| 日韩亚洲国产免费| 日本中文在线| 亚洲а∨精品天堂在线| 国产成人啪精品午夜在线观看| 亚洲黄色一级大片| 国产乡下妇女做爰| 久久夜精品va视频免费观看| 国产真实乱在线更新| 在线成人一区| 粉嫩喷白浆久久| 高清av电影| 国产一区二区三区四区二区| 国产精品香蕉一区二区三区| 丁香5月婷婷久久| 国产精品拍拍拍| 日本不卡视频| 国产视频久久久久久久| 欧美成人a交片免费看| 国内精品偷拍| 在线观看精品视频看看播放| 亚洲一区二区小说| jizzjizz视频| 亚洲精品乱码久久久久久蜜桃欧美| 久久久久亚洲av成人网人人软件| 韩日欧美一区二区三区| 91精品国产自产观看在线| 久久精品亚洲一区二区| 黑人精品xxx一区| 国产999精品久久| 韩国v欧美v亚洲v日本v| 天堂网在线免费观看| 欧美日韩高清在线播放| 中文字幕中文字幕一区三区| 亚洲午夜久久久久中文字幕| 国产日本欧美一区二区三区| 好吊的妞视频这里都有| 精品久久久久久久久久久国产字幕| 奇米色一区二区| 国产精品久久久久久99| 亚洲图片欧美视频| 黑人巨大精品欧美一区二区小视频| 在线播放国产精品二区一二区四区| 免费麻豆国产一区二区三区四区| 不卡一区二区在线| 久久精品视频在线观看免费| 美女视频网站黄色亚洲| 日本伊人精品一区二区三区观看方式| 欧美激情在线免费观看| 老司机午夜免费福利视频| 青青a在线精品免费观看| 亚洲欧美综合v| 日本激情五月| 国产一区二区精品调教| 97av视频在线| 最新真实国产在线视频| 欧美日本一道本| 欧洲一级视频| 久久在线免费视频| 久久久久久久久久久久久av| 色偷偷www8888| 免费网站观看电影入口| 久久精品人人做人人爽电影蜜月| 日日夜夜狠狠操| 亚洲第一成人在线视频| xxxx18国产| 国产亚洲高清一区| caoporm在线视频| 国产馆av播放| 久久久午夜精品福利内容| 99久久精品国产一区二区小说| 三年中文在线观看免费大全中国| 日韩美女中文字幕| 欧美一区二区三区黄片| 影音先锋男人资源站在线观看| 天堂中文在线播放| 国产一区二区三区四区福利| 97久久人人超碰caoprom欧美| 欧美日本视频在线| www.噜噜色.com| 欧美无遮挡国产欧美另类| 亚洲av综合色区无码另类小说| 美女福利一区二区三区| 欧美亚洲综合在线| 免费观看一区二区三区| 91精品在线看| 日韩av午夜| 国产国语老龄妇女a片| 久久久久免费视频| 9191在线| 免费观看中文字幕| 国产精品剧情在线亚洲| 欧美手机在线| 国产精品成人aaaa在线| 色婷婷综合视频| 99精品热视频只有精品10| 国产mv免费观看入口亚洲| 亚洲精品久久嫩草网站秘色| 国产亚洲自拍一区| 成视人a免费观看视频| 精品日产卡一卡二卡麻豆| 国产麻豆剧传媒精品国产|