golang 中的 io包

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

一些抽象化的介面

讀相關

名稱 作用 備忘
Read 讀介面 1
ReadCloser 讀介面(包含 Close介面) 2
ReadSeeker 從哪裡讀到哪裡 3
ReaderAt 從一定距離開始讀 4
ReaderFrom 包含 ReadForm方法,讀到Eof 或 error停止。返回讀到的位元組數 5

寫相關

名稱 作用 備忘
Writer 讀介面 1
WriteCloser 讀介面(包含 Close介面) 2
WriteSeeker 從哪裡讀到哪裡 3
WriterAt 從一定距離開始讀 4
WriterTo 包含 WriterTo 方法,讀到Eof 或 error停止。返回寫入的位元組數

 

幾個函數方法

1. Copy (內部實現了 ReaderFrom 和 WriterTo 介面)

func Copy(dst Writer, src Reader) (written int64, err error)
// 將字串變成 Readerr := strings.NewReader("some io.Reader stream to be read\n")if _, err := io.Copy(os.Stdout, r); err != nil {    log.Fatal(err)}

2. CopyBuffer

func CopyBuffer(dst Writer, src Reader, buf []byte) (written int64, err error)
r1 := strings.NewReader("first reader\n")r2 := strings.NewReader("second reader\n")buf := make([]byte, 8)// buf is used here...if _, err := io.CopyBuffer(os.Stdout, r1, buf); err != nil {    log.Fatal(err)}// ... reused here also. No need to allocate an extra buffer.if _, err := io.CopyBuffer(os.Stdout, r2, buf); err != nil {    log.Fatal(err)}/* output:first reader second reader*/

3. ReadFull

func ReadFull(r Reader, buf []byte) (n int, err error)
r := strings.NewReader("some io.Reader stream to be read\n")buf := make([]byte, 4)if _, err := io.ReadFull(r, buf); err != nil {    log.Fatal(err)}fmt.Printf("%s\n", buf)// minimal read size bigger than io.Reader streamlongBuf := make([]byte, 64)if _, err := io.ReadFull(r, longBuf); err != nil {    fmt.Println("error:", err)}/*output:someerror: unexpected EOF*/

4. WriteString

func WriteString(w Writer, s string) (n int, err error)
io.WriteString(os.Stdout, "Hello World")/*output:Hello World*/

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.