github.com/qiniu/go-sdk/v7@v7.27.0/internal/io/io.go (about)

     1  package io
     2  
     3  import (
     4  	"bytes"
     5  	"io"
     6  	"strings"
     7  )
     8  
     9  func ReadAll(r io.Reader) ([]byte, error) {
    10  	switch b := r.(type) {
    11  	case *BytesNopCloser:
    12  		_, err := b.Seek(0, io.SeekEnd)
    13  		return b.Bytes(), err
    14  	default:
    15  		return io.ReadAll(r)
    16  	}
    17  }
    18  
    19  func SinkAll(r io.Reader) (err error) {
    20  	switch b := r.(type) {
    21  	case *BytesNopCloser:
    22  		_, err = b.Seek(0, io.SeekEnd)
    23  	case *bytes.Buffer:
    24  		b.Truncate(0)
    25  	case *bytes.Reader:
    26  		_, err = b.Seek(0, io.SeekEnd)
    27  	case *strings.Reader:
    28  		_, err = b.Seek(0, io.SeekEnd)
    29  	default:
    30  		_, err = io.Copy(io.Discard, r)
    31  	}
    32  	return
    33  }