亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

directory search
archive archive/tar archive/zip bufio bufio(緩存) builtin builtin(內(nèi)置包) bytes bytes(包字節(jié)) compress compress/bzip2(壓縮/bzip2) compress/flate(壓縮/flate) compress/gzip(壓縮/gzip) compress/lzw(壓縮/lzw) compress/zlib(壓縮/zlib) container container/heap(容器數(shù)據(jù)結(jié)構(gòu)heap) container/list(容器數(shù)據(jù)結(jié)構(gòu)list) container/ring(容器數(shù)據(jù)結(jié)構(gòu)ring) context context(上下文) crypto crypto(加密) crypto/aes(加密/aes) crypto/cipher(加密/cipher) crypto/des(加密/des) crypto/dsa(加密/dsa) crypto/ecdsa(加密/ecdsa) crypto/elliptic(加密/elliptic) crypto/hmac(加密/hmac) crypto/md5(加密/md5) crypto/rand(加密/rand) crypto/rc4(加密/rc4) crypto/rsa(加密/rsa) crypto/sha1(加密/sha1) crypto/sha256(加密/sha256) crypto/sha512(加密/sha512) crypto/subtle(加密/subtle) crypto/tls(加密/tls) crypto/x509(加密/x509) crypto/x509/pkix(加密/x509/pkix) database database/sql(數(shù)據(jù)庫/sql) database/sql/driver(數(shù)據(jù)庫/sql/driver) debug debug/dwarf(調(diào)試/dwarf) debug/elf(調(diào)試/elf) debug/gosym(調(diào)試/gosym) debug/macho(調(diào)試/macho) debug/pe(調(diào)試/pe) debug/plan9obj(調(diào)試/plan9obj) encoding encoding(編碼) encoding/ascii85(編碼/ascii85) encoding/asn1(編碼/asn1) encoding/base32(編碼/base32) encoding/base64(編碼/base64) encoding/binary(編碼/binary) encoding/csv(編碼/csv) encoding/gob(編碼/gob) encoding/hex(編碼/hex) encoding/json(編碼/json) encoding/pem(編碼/pem) encoding/xml(編碼/xml) errors errors(錯誤) expvar expvar flag flag(命令行參數(shù)解析flag包) fmt fmt go go/ast(抽象語法樹) go/build go/constant(常量) go/doc(文檔) go/format(格式) go/importer go/parser go/printer go/scanner(掃描儀) go/token(令牌) go/types(類型) hash hash(散列) hash/adler32 hash/crc32 hash/crc64 hash/fnv html html html/template(模板) image image(圖像) image/color(顏色) image/color/palette(調(diào)色板) image/draw(繪圖) image/gif image/jpeg image/png index index/suffixarray io io io/ioutil log log log/syslog(日志系統(tǒng)) math math math/big math/big math/bits math/bits math/cmplx math/cmplx math/rand math/rand mime mime mime/multipart(多部分) mime/quotedprintable net net net/http net/http net/http/cgi net/http/cookiejar net/http/fcgi net/http/httptest net/http/httptrace net/http/httputil net/http/internal net/http/pprof net/mail net/mail net/rpc net/rpc net/rpc/jsonrpc net/smtp net/smtp net/textproto net/textproto net/url net/url os os os/exec os/signal os/user path path path/filepath(文件路徑) plugin plugin(插件) reflect reflect(反射) regexp regexp(正則表達式) regexp/syntax runtime runtime(運行時) runtime/debug(調(diào)試) runtime/internal/sys runtime/pprof runtime/race(競爭) runtime/trace(執(zhí)行追蹤器) sort sort(排序算法) strconv strconv(轉(zhuǎn)換) strings strings(字符串) sync sync(同步) sync/atomic(原子操作) syscall syscall(系統(tǒng)調(diào)用) testing testing(測試) testing/iotest testing/quick text text/scanner(掃描文本) text/tabwriter text/template(定義模板) text/template/parse time time(時間戳) unicode unicode unicode/utf16 unicode/utf8 unsafe unsafe
characters

  • import "io"

  • 概況

  • 索引

  • 示例

  • 子目錄

概況

Package io 為 I/O 原語提供基本接口。它的主要工作是將這些原語的現(xiàn)有實現(xiàn)(例如包 os 中的那些原語)包裝到抽象功能的共享公共接口中,以及一些其他相關(guān)原語中。

因為這些接口和原語用各種實現(xiàn)包裝較低級別的操作,除非另有通知的客戶端不應(yīng)該認為它們對于并行執(zhí)行是安全的。

索引

  • 常量

  • 變量

  • func Copy(dst Writer, src Reader) (written int64, err error)

  • func CopyBuffer(dst Writer, src Reader, buf []byte) (written int64, err error)

  • func CopyN(dst Writer, src Reader, n int64) (written int64, err error)

  • func ReadAtLeast(r Reader, buf []byte, min int) (n int, err error)

  • func ReadFull(r Reader, buf []byte) (n int, err error)

  • func WriteString(w Writer, s string) (n int, err error)

  • type ByteReader

  • type ByteScanner

  • type ByteWriter

  • type Closer

  • type LimitedReader

  • func (l *LimitedReader) Read(p []byte) (n int, err error)

  • type PipeReader

  • func Pipe() (*PipeReader, *PipeWriter)

  • func (r *PipeReader) Close() error

  • func (r *PipeReader) CloseWithError(err error) error

  • func (r *PipeReader) Read(data []byte) (n int, err error)

  • type PipeWriter

  • func (w *PipeWriter) Close() error

  • func (w *PipeWriter) CloseWithError(err error) error

  • func (w *PipeWriter) Write(data []byte) (n int, err error)

  • type ReadCloser

  • type ReadSeeker

  • type ReadWriteCloser

  • type ReadWriteSeeker

  • type ReadWriter

  • type Reader

  • func LimitReader(r Reader, n int64) Reader

  • func MultiReader(readers ...Reader) Reader

  • func TeeReader(r Reader, w Writer) Reader

  • type ReaderAt

  • type ReaderFrom

  • type RuneReader

  • type RuneScanner

  • type SectionReader

  • func NewSectionReader(r ReaderAt, off int64, n int64) *SectionReader

  • func (s *SectionReader) Read(p []byte) (n int, err error)

  • func (s *SectionReader) ReadAt(p []byte, off int64) (n int, err error)

  • func (s *SectionReader) Seek(offset int64, whence int) (int64, error)

  • func (s *SectionReader) Size() int64

  • type Seeker

  • type WriteCloser

  • type WriteSeeker

  • type Writer

  • func MultiWriter(writers ...Writer) Writer

  • type WriterAt

  • type WriterTo

示例

Copy

CopyBuffer

CopyN

LimitReader

MultiReader

MultiWriter

ReadAtLeast

ReadFull

SectionReader

SectionReader.ReadAt

SectionReader.Seek

TeeReader

WriteString

包文件

io.go multi.go pipe.go

常量

尋求哪些值。

const (
        SeekStart   = 0 // 尋找相對于文件的起源
        SeekCurrent = 1 // 尋找相對于當(dāng)前的偏移量
        SeekEnd     = 2 // 尋求相對于目的)

變量

當(dāng)沒有更多輸入可用時,EOF 是由 Read 返回的錯誤。函數(shù)只能返回 EOF 來表示輸入的正常結(jié)束。如果 EOF 在結(jié)構(gòu)化數(shù)據(jù)流中意外發(fā)生,則適當(dāng)?shù)腻e誤是 ErrUnexpectedEOF 或其他一些錯誤,以提供更多詳細信息。

var EOF = errors.New("EOF")

ErrClosedPipe 是用于在關(guān)閉的管道上進行讀取或?qū)懭氩僮鞯腻e誤。

var ErrClosedPipe = errors.New("io: read/write on closed pipe")

ErrNoProgress 是由一些 io.Reader 的客戶端在許多 Read 的調(diào)用未能返回任何數(shù)據(jù)或錯誤(通常是破壞的 io.Reader 實現(xiàn)的標志)失敗時返回的。

var ErrNoProgress = errors.New("multiple Read calls return no data or error")

ErrShortBuffer 意味著讀取需要比提供的更長的緩沖區(qū)。

var ErrShortBuffer = errors.New("short buffer")

ErrShortWrite 意味著寫入接受的字節(jié)數(shù)少于請求的數(shù)量,但未能返回明確的錯誤。

var ErrShortWrite = errors.New("short write")

ErrUnexpectedEOF 表示在讀取固定大小塊或數(shù)據(jù)結(jié)構(gòu)的過程中遇到 EOF 。

var ErrUnexpectedEOF = errors.New("unexpected EOF")

func Copy

func Copy(dst Writer, src Reader) (written int64, err error)

將副本從 src 復(fù)制到 dst ,直到在 src 上達到 EOF 或發(fā)生錯誤。它返回復(fù)制的字節(jié)數(shù)和復(fù)制時遇到的第一個錯誤(如果有的話)。

成功的復(fù)制返回err == nil,而不是err == EOF。由于 Copy 定義為從 src 讀取直到 EOF,因此它不會將 Read 中的 EOF 視為要報告的錯誤。

如果 src 實現(xiàn) WriterTo 接口,則通過調(diào)用 src.WriteTo(dst)來實現(xiàn)副本。否則,如果 dst 實現(xiàn) ReaderFrom 接口,則通過調(diào)用 dst.ReadFrom(src)來實現(xiàn)副本。

示例

package mainimport ("io""log""os""strings")func main() {
	r := strings.NewReader("some io.Reader stream to be read\n")if _, err := io.Copy(os.Stdout, r); err != nil {
		log.Fatal(err)}}

func CopyBuffer

func CopyBuffer(dst Writer, src Reader, buf []byte) (written int64, err error)

CopyBuffer 與 Copy 相同,只是它通過提供的緩沖區(qū)(如果需要的話)進行分級,而不是分配臨時的緩沖區(qū)。如果 buf 為零,則分配一個;否則如果它的長度為零,CopyBuffer 會發(fā)生混亂。

示例

package mainimport ("io""log""os""strings")func main() {
	r1 := strings.NewReader("first reader\n")
	r2 := strings.NewReader("second reader\n")
	buf := make([]byte, 8)// 在這里使用buf ...if _, err := io.CopyBuffer(os.Stdout, r1, buf); err != nil {
		log.Fatal(err)}// ...也在這里重復(fù)使用。 無需分配額外的緩沖區(qū)。if _, err := io.CopyBuffer(os.Stdout, r2, buf); err != nil {
		log.Fatal(err)}}

func CopyN

func CopyN(dst Writer, src Reader, n int64) (written int64, err error)

CopyN 拷貝從 src 到 dst 的 n 個字節(jié)(或直出現(xiàn)一個錯誤)。它返回拷貝的字節(jié)數(shù)和復(fù)制時遇到的最早的錯誤。返回時,written == n 當(dāng)且僅當(dāng) err == nil 。

如果 dst 實現(xiàn) ReaderFrom 接口,則使用它實現(xiàn)副本。

示例

package mainimport ("io""log""os""strings")func main() {
	r := strings.NewReader("some io.Reader stream to be read")if _, err := io.CopyN(os.Stdout, r, 5); err != nil {
		log.Fatal(err)}}

func ReadAtLeast

func ReadAtLeast(r Reader, buf []byte, min int) (n int, err error)

ReadAtLeast 從 r 讀入 buf,直到它讀取至少最小字節(jié)。它返回復(fù)制的字節(jié)數(shù),如果讀取的字節(jié)更少,則返回錯誤。只有在沒有字節(jié)被讀取的情況下,錯誤才是 EOF 。如果在讀取少于最小字節(jié)數(shù)后發(fā)生 EOF,則 ReadAtLeast 返回 ErrUnexpectedEOF 。如果 min 大于 buf 的長度,則 ReadAtLeast 返回 ErrShortBuffer。返回時,n> = min 當(dāng)且僅當(dāng) err == nil 。

示例

package mainimport ("fmt""io""log""strings")func main() {
	r := strings.NewReader("some io.Reader stream to be read\n")

	buf := make([]byte, 33)if _, err := io.ReadAtLeast(r, buf, 4); err != nil {
		log.Fatal(err)}
	fmt.Printf("%s\n", buf)// 緩沖區(qū)小于最小讀取大小。
	shortBuf := make([]byte, 3)if _, err := io.ReadAtLeast(r, shortBuf, 4); err != nil {
		fmt.Println("error:", err)}// 最小讀取大小比io.Reader流大
	longBuf := make([]byte, 64)if _, err := io.ReadAtLeast(r, longBuf, 64); err != nil {
		fmt.Println("error:", err)}}

func ReadFull

func ReadFull(r Reader, buf []byte) (n int, err error)

ReadFull 完全讀取從 r 到 buf 的 len(buf) 個字節(jié)。它返回復(fù)制的字節(jié)數(shù),如果讀取的字節(jié)更少,則返回錯誤。只有在沒有字節(jié)被讀取的情況下,錯誤才是 EOF 。如果在讀取一些但不是全部字節(jié)后發(fā)生 EOF,則 ReadFull 將返回 ErrUnexpectedEOF 。返回時,n == len(buf) 當(dāng)且僅當(dāng) err == nil 。

示例

package mainimport ("fmt""io""log""strings")func main() {
	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)// 最小讀取大小比io.Reader流大
	longBuf := make([]byte, 64)if _, err := io.ReadFull(r, longBuf); err != nil {
		fmt.Println("error:", err)}}

func WriteString

func WriteString(w Writer, s string) (n int, err error)

WriteString 將字符串 s 的內(nèi)容寫入 w,它接受一個字節(jié)片段。如果 w 實現(xiàn) WriteString 方法,則直接調(diào)用它。否則,w.Write 只會被調(diào)用一次。

示例

package mainimport ("io""os")func main() {
	io.WriteString(os.Stdout, "Hello World")}

type ByteReader

ByteReader 是包裝 ReadByte 方法的接口。

ReadByte 讀取并返回輸入中的下一個字節(jié)或遇到的任何錯誤。如果 ReadByte 返回錯誤,則不消耗輸入字節(jié),并且返回的字節(jié)值未定義。

type ByteReader interface {        ReadByte() (byte, error)}

type ByteScanner

ByteScanner 是將 UnreadByte 方法添加到基本 ReadByte 方法的接口。

UnreadByte 導(dǎo)致下一次對 ReadByte 的調(diào)用返回與先前對 ReadByte 的調(diào)用相同的字節(jié)。在沒有對 ReadByte 的中間調(diào)用的情況下調(diào)用 UnreadByte 兩次可能是錯誤的。

type ByteScanner interface {
        ByteReader        UnreadByte() error}

type ByteWriter

ByteWriter 是包裝 WriteByte 方法的接口。

type ByteWriter interface {        WriteByte(c byte) error}

type Closer

Closer 是包裝基本 Close 方法的接口。

第一次調(diào)用后 Close 的行為是未定義的。具體實現(xiàn)可以記錄他們自己的行為。

type Closer interface {        Close() error}

type LimitedReader

LimitedReader 從 R 中讀取數(shù)據(jù),但將數(shù)據(jù)量限制為僅返回 N 個字節(jié)。每次讀取更新 N 將反映新的剩余金額。當(dāng) N <= 0 或當(dāng)基礎(chǔ) R 返回 EOF 時,讀取返回 EOF 。

type LimitedReader struct {
        R Reader // 底層閱讀器
        N int64  // 剩余最大字節(jié)數(shù)}

func (*LimitedReader) Read

func (l *LimitedReader) Read(p []byte) (n int, err error)

type PipeReader

PipeReader 是pipe的二分之一read。

type PipeReader struct {        // 包含已過濾或未導(dǎo)出的字段}

func Pipe

func Pipe() (*PipeReader, *PipeWriter)

Pipe 創(chuàng)建一個同步內(nèi)存管道。它可以用來連接代碼期望一個 io.Reader 與代碼期待一個 io.Writer 。

讀取和寫入管道是一對一匹配的,除非需要多個讀取消耗單個寫入。也就是說,對 PipeWriter 的每次寫入都會阻塞,直到它滿足 PipeReader 中完全使用寫入數(shù)據(jù)的一個或多個讀取。數(shù)據(jù)直接從寫入復(fù)制到相應(yīng)的 Read(或 Reads); 沒有內(nèi)部緩沖。

相互并行或使用 Close 并行調(diào)用 Read 和 Write 是安全的。并行調(diào)用讀取和并行調(diào)用寫入也是安全的:個別調(diào)用將按順序進行門控。

func (*PipeReader) Close

func (r *PipeReader) Close() error

Close 關(guān)閉閱讀器;隨后寫入管道的寫入一半將返回錯誤 ErrClosedPipe 。

func (*PipeReader) CloseWithError

func (r *PipeReader) CloseWithError(err error) error

CloseWithError 關(guān)閉閱讀器;隨后寫入管道的寫入一半將返回錯誤 err 。

func (*PipeReader) Read

func (r *PipeReader) Read(data []byte) (n int, err error)

Read 實現(xiàn)標準的 Read 接口:它從管道讀取數(shù)據(jù),阻塞直到寫入者到達或?qū)懭虢Y(jié)束被關(guān)閉。如果寫入結(jié)束時出現(xiàn)錯誤,則該錯誤返回為錯誤;否則 err 是 EOF 。

type PipeWriter

PipeWriter 是寫入一半的管道。

type PipeWriter struct {        // 包含已過濾或未導(dǎo)出的字段}

func (*PipeWriter) Close

func (w *PipeWriter) Close() error

Close 關(guān)閉寫入者;后續(xù)讀取管道的一半將不返回字節(jié)和 EOF 。

func (*PipeWriter) CloseWithError

func (w *PipeWriter) CloseWithError(err error) error

CloseWithError 關(guān)閉寫入者;從管道的讀取一半的后續(xù)讀取將返回沒有字節(jié)和 error 錯誤,或如果錯誤為零則為 EOF 。

CloseWithError 總是返回 nil 。

func (*PipeWriter) Write

func (w *PipeWriter) Write(data []byte) (n int, err error)

Write 實現(xiàn)了標準的 Write 接口:它將數(shù)據(jù)寫入管道,阻塞直到一個或多個讀取器消耗完所有數(shù)據(jù)或讀取端關(guān)閉。如果讀取結(jié)束時出現(xiàn)錯誤,則該錯誤返回為 err ; 否則 err 是 ErrClosedPipe 。

type ReadCloser

ReadCloser 是分組基本的 Read 和 Close 方法的接口。

type ReadCloser interface {
        Reader
        Closer}

type ReadSeeker

ReadSeeker 是將基本的 Read 和 Seek 方法分組的接口。

type ReadSeeker interface {
        Reader
        Seeker}

type ReadWriteCloser

ReadWriteCloser 是對基本的 Read,Write 和 Close 方法進行分組的接口。

type ReadWriteCloser interface {
        Reader
        Writer
        Closer}

type ReadWriteSeeker

ReadWriteSeeker 是將基本的 Read,Write 和 Seek 方法分組的接口。

type ReadWriteSeeker interface {
        Reader
        Writer
        Seeker}

type ReadWriter

ReadWriter 是分組基本讀寫方法的接口。

type ReadWriter interface {
        Reader
        Writer}

type Reader

Reader 是包裝基本 Read 方法的接口。

Read 讀取 len(p)個字節(jié)到 p 。它返回讀取的字節(jié)數(shù)(0 <= n <= len(p))和遇到的任何錯誤。即使 Read 返回 n <len(p),它也可以在調(diào)用期間將全部 p 用作暫存空間。如果某些數(shù)據(jù)可用但不是 len(p) 字節(jié),則 Read 通常返回可用的數(shù)據(jù),而不是等待更多數(shù)據(jù)。

當(dāng) Read 在成功讀取 n> 0 字節(jié)后遇到錯誤或文件結(jié)束條件時,它會返回讀取的字節(jié)數(shù)。它可能會從相同的調(diào)用中返回(非零)錯誤,或者從后續(xù)調(diào)用中返回錯誤(和 n == 0)。這種一般情況的一個實例是,在輸入流末尾返回非零字節(jié)數(shù)的 Reader 可能會返回 err == EOF 或 err == nil 。下一個 Read 應(yīng)該返回 0,EOF 。

在考慮錯誤錯誤之前,Callers 應(yīng)始終處理返回的 n> 0 個字節(jié)。這樣做可以正確處理讀取一些字節(jié)后發(fā)生的 I/O 錯誤以及兩種允許的 EOF 行為。

除非 len(p)== 0,否則 Read 的實現(xiàn)不鼓勵返回零字節(jié)的計數(shù)和零錯誤。調(diào)用者應(yīng)該將返回值 0 和零作為表示什么都沒有發(fā)生; 特別是它不表示 EOF 。

Implementations 不能保留 p 。

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

func LimitReader

func LimitReader(r Reader, n int64) Reader

LimitReader 返回一個 Reader,它從 r 讀取,但在 n 字節(jié)后用 EOF 停止。底層的實現(xiàn)是一個 *LimitedReader 。

示例

package mainimport ("io""log""os""strings")func main() {
	r := strings.NewReader("some io.Reader stream to be read\n")
	lr := io.LimitReader(r, 4)if _, err := io.Copy(os.Stdout, lr); err != nil {
		log.Fatal(err)}}

func MultiReader

func MultiReader(readers ...Reader) Reader

MultiReader 返回一個 Reader,它是提供的輸入讀取器的邏輯連接。他們順序閱讀。一旦所有輸入都返回 EOF,Read 將返回 EOF 。如果任何閱讀器返回非零非 EOF 錯誤,則 Read 將返回該錯誤。

示例

package mainimport ("io""log""os""strings")func main() {
	r1 := strings.NewReader("first reader ")
	r2 := strings.NewReader("second reader ")
	r3 := strings.NewReader("third reader\n")
	r := io.MultiReader(r1, r2, r3)if _, err := io.Copy(os.Stdout, r); err != nil {
		log.Fatal(err)}}

func TeeReader

func TeeReader(r Reader, w Writer) Reader

TeeReader 返回一個讀寫器,它讀寫從 r 讀取的內(nèi)容。從 r 執(zhí)行的所有讀取操作都與 w 的相應(yīng)寫入相匹配。沒有內(nèi)部緩沖 - 寫入必須在讀取完成之前完成。寫入時遇到的任何錯誤都會報告為讀取錯誤。

示例

package mainimport ("bytes""fmt""io""io/ioutil""log""strings")func main() {
	r := strings.NewReader("some io.Reader stream to be read\n")var buf bytes.Buffer
	tee := io.TeeReader(r, &buf)

	printall := func(r io.Reader) {
		b, err := ioutil.ReadAll(r)if err != nil {
			log.Fatal(err)}

		fmt.Printf("%s", b)}printall(tee)printall(&buf)}

type ReaderAt

ReaderAt 是包裝基本 ReadAt 方法的接口。

ReadAt 將 len(p) 個字節(jié)讀入底層輸入源的偏移 off 開始的 p 。它返回讀取的字節(jié)數(shù) (0 <= n <= len(p)) 和遇到的任何錯誤。

當(dāng) ReadAt 返回 n <len(p) 時,它將返回一個非零錯誤,解釋為什么不返回更多字節(jié)。在這方面,ReadAt 比 Read 更嚴格。

即使 ReadAt 返回 n <len(p),它也可能在調(diào)用期間將所有 p 用作臨時空間。如果有些數(shù)據(jù)可用但不是 len(p) 字節(jié),則 ReadAt 阻塞,直到所有數(shù)據(jù)都可用或發(fā)生錯誤。在這方面,ReadAt 與 Read 不同。

如果 ReadAt 返回的 n = len(p) 字節(jié)位于輸入源的末尾,則 ReadAt 可能會返回 err == EOF 或 err == nil 。

如果 ReadAt 正在從具有查找偏移量的輸入源讀取,則 ReadAt 不應(yīng)受影響,也不應(yīng)受基礎(chǔ)查找偏移量的影響。

ReadAt 的客戶端可以在同一個輸入源上執(zhí)行并行 ReadAt 調(diào)用。

實現(xiàn)不能保留 p 。

type ReaderAt interface {        ReadAt(p []byte, off int64) (n int, err error)}

type ReaderFrom

ReaderFrom 是包裝 ReadFrom 方法的接口。

ReadFrom 從 r 讀取數(shù)據(jù)直到出現(xiàn) EOF 或錯誤。返回值 n 是讀取的字節(jié)數(shù)。讀取過程中遇到的除 io.EOF 外的任何錯誤也會返回。

復(fù)制功能使用 ReaderFrom(如果可用)。

type ReaderFrom interface {        ReadFrom(r Reader) (n int64, err error)}

type RuneReader

RuneReader 是包裝 ReadRune 方法的接口。

ReadRune 讀取單個 UTF-8 編碼的 Unicode 字符,并以字節(jié)為單位返回符文及其大小。如果沒有可用的字符,則會設(shè)置 err 。

type RuneReader interface {        ReadRune() (r rune, size int, err error)}

type RuneScanner

RuneScanner 是將 UnreadRune 方法添加到基本 ReadRune 方法的接口。

UnreadRune 會導(dǎo)致下一次對 ReadRune 的調(diào)用返回與先前對 ReadRune 的調(diào)用相同的符文。在沒有對 ReadRune 的中間調(diào)用的情況下調(diào)用 UnreadRune 可能是錯誤的。

type RuneScanner interface {
        RuneReader        UnreadRune() error}

type SectionReader

SectionReader 在基礎(chǔ) ReaderAt 的一部分上實現(xiàn) Read,Seek 和 ReadAt 。

type SectionReader struct {        // 包含已過濾或未導(dǎo)出的字段}

示例

package mainimport ("io""log""os""strings")func main() {
	r := strings.NewReader("some io.Reader stream to be read\n")
	s := io.NewSectionReader(r, 5, 17)if _, err := io.Copy(os.Stdout, s); err != nil {
		log.Fatal(err)}}

func NewSectionReader

func NewSectionReader(r ReaderAt, off int64, n int64) *SectionReader

NewSectionReader 返回一個 SectionReader,它從 r 處開始讀取 offset,并在 n 字節(jié)后用 EOF 停止。

func (*SectionReader) Read

func (s *SectionReader) Read(p []byte) (n int, err error)

func (*SectionReader) ReadAt

func (s *SectionReader) ReadAt(p []byte, off int64) (n int, err error)

示例

package mainimport ("fmt""io""log""strings")func main() {
	r := strings.NewReader("some io.Reader stream to be read\n")
	s := io.NewSectionReader(r, 5, 16)

	buf := make([]byte, 6)if _, err := s.ReadAt(buf, 10); err != nil {
		log.Fatal(err)}

	fmt.Printf("%s\n", buf)}

func (*SectionReader) Seek

func (s *SectionReader) Seek(offset int64, whence int) (int64, error)

示例

package mainimport ("fmt""io""log""strings")func main() {
	r := strings.NewReader("some io.Reader stream to be read\n")
	s := io.NewSectionReader(r, 5, 16)if _, err := s.Seek(10, io.SeekStart); err != nil {
		log.Fatal(err)}

	buf := make([]byte, 6)if _, err := s.Read(buf); err != nil {
		log.Fatal(err)}

	fmt.Printf("%s\n", buf)}

func (*SectionReader) Size

func (s *SectionReader) Size() int64

大小以字節(jié)為單位返回該部分的大小。

type Seeker

Seeker 是包裝基本 Seek 方法的接口。

Seek 設(shè)置下一個讀取或?qū)懭肫屏康钠屏?,根?jù)此解釋:SeekStart 表示相對于文件的開始,SeekCurrent 表示相對于當(dāng)前偏移量,SeekEnd 表示相對于結(jié)束。Seek 返回相對于文件開始的新偏移量和一個錯誤(如果有的話)。

在文件開始之前尋找偏移量是一個錯誤。尋求任何正偏移量是合法的,但后續(xù)對基礎(chǔ)對象的 I/O 操作的行為取決于實現(xiàn)。

type Seeker interface {        Seek(offset int64, whence int) (int64, error)}

type WriteCloser

WriteCloser 是分組基本 Write 和 Close 方法的接口。

type WriteCloser interface {
        Writer
        Closer}

type WriteSeeker

WriteSeeker 是將基本寫入和查找方法分組的接口。

type WriteSeeker interface {
        Writer
        Seeker}

type Writer

Writer 是包裝基本 Write 方法的接口。

寫從 p 寫入 len(p) 個字節(jié)到底層數(shù)據(jù)流。它返回從p (0 <= n <= len(p)) 寫入的字節(jié)數(shù),以及遇到任何導(dǎo)致寫入提前停止的錯誤。如果返回 n < len(p),則寫入必須返回非零錯誤。寫入不能修改片數(shù)據(jù),即使是暫時的。

實現(xiàn)不能保留 p 。

type Writer interface {        Write(p []byte) (n int, err error)}

func MultiWriter

func MultiWriter(writers ...Writer) Writer

MultiWriter 創(chuàng)建一個寫入器,將其寫入所有提供的寫入器,類似于 Unix tee(1) 命令。

示例

package mainimport ("bytes""fmt""io""log""strings")func main() {
	r := strings.NewReader("some io.Reader stream to be read\n")var buf1, buf2 bytes.Buffer
	w := io.MultiWriter(&buf1, &buf2)if _, err := io.Copy(w, r); err != nil {
		log.Fatal(err)}

	fmt.Print(buf1.String())
	fmt.Print(buf2.String())}

type WriterAt

WriterAt 是包裝基本 WriteAt 方法的接口。

WriteAt 將 p 的 len(p) 個字節(jié)寫入偏移關(guān)閉的基礎(chǔ)數(shù)據(jù)流。它返回從 p (0 <= n <= len(p))寫入的字節(jié)數(shù),以及遇到任何導(dǎo)致寫入提前停止的錯誤。如果返回 n < len(p),WriteAt 必須返回非零錯誤。

如果 WriteAt 正在使用搜索偏移量寫入目標,則 WriteAt 不應(yīng)受影響,也不應(yīng)受底層搜索偏移量的影響。

如果范圍不重疊,則 WriteAt 的客戶端可以在同一個目的地上執(zhí)行并行 WriteAt 調(diào)用。

實現(xiàn)不能保留 p 。

type WriterAt interface {        WriteAt(p []byte, off int64) (n int, err error)}

type WriterTo

WriterTo 是包裝 WriteTo 方法的接口。

WriteTo 將數(shù)據(jù)寫入 w,直到?jīng)]有更多數(shù)據(jù)要寫入或出現(xiàn)錯誤時為止。返回值 n 是寫入的字節(jié)數(shù)。寫入過程中遇到的任何錯誤也會返回。

復(fù)制功能使用 WriterTo(如果可用)。

type WriterTo interface {        WriteTo(w Writer) (n int64, err error)}

子目錄

Name

Synopsis

ioutil

Package ioutil實現(xiàn)了一些 I/O 實用程序功能。

Previous article: Next article: