Package io

Overview ▾

软件包io提供了与I / O原语的基本接口. 它的主要工作是将此类原语的现有实现(例如包os中的实现)包装到抽象化功能的共享公共接口以及一些其他相关原语中.

由于这些接口和原语使用各种实现来包装低级操作,除非另行通知,否则客户机不应假定它们对于并行执行是安全的.

Index ▾

Constants
Variables
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 Pipe() (*PipeReader, *PipeWriter)
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 (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 StringWriter
type WriteCloser
type WriteSeeker
type Writer
    func MultiWriter(writers ...Writer) Writer
type WriterAt
type WriterTo

Package files

io.go multi.go pipe.go

Constants

寻求价值来源.

const (
    SeekStart   = 0 // seek relative to the origin of the file
    SeekCurrent = 1 // seek relative to the current offset
    SeekEnd     = 2 // seek relative to the end
)

Variables

当没有更多输入可用时,EOF是"读取"返回的错误. 函数应返回EOF仅表示正常输入结束. 如果EOF在结构化数据流中意外发生,则适当的错误是ErrUnexpectedEOF或提供更多详细信息的某些其他错误.

var EOF = errors.New("EOF")

ErrClosedPipe是用于在封闭管道上进行读取或写入操作的错误.

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

当许多对Read的调用未能返回任何数据或错误(通常是io.Reader实现损坏的标志)时,io.Reader的某些客户端将返回ErrNoProgress.

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

ErrShortBuffer表示读取所需的缓冲区比提供的缓冲区更长.

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

ErrShortWrite表示写入接受的字节数少于请求的字节数,但未能返回显式错误.

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

ErrUnexpectedEOF表示在读取固定大小的块或数据结构的中间遇到了EOF.

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

func Copy

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

将副本从src复制到dst,直到在src上达到EOF或发生错误. 它返回复制的字节数和复制时遇到的第一个错误(如果有).

成功的复制将返回err == nil,而不是err == EOF. 因为复制被定义为从src读取直到EOF,所以它不会将读取的EOF视为要报告的错误.

如果src实现WriterTo接口,则通过调用src.WriteTo(dst)实现该副本. 否则,如果dst实现了ReaderFrom接口,则通过调用dst.ReadFrom(src)实现该副本.

Example

some io.Reader stream to be read

func CopyBuffer 1.5

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

CopyBuffer与Copy相同,区别在于CopyBuffer逐步遍历提供的缓冲区(如果需要),而不是分配临时缓冲区. 如果buf为nil,则分配一个; 否则,如果长度为零,则CopyBuffer会发生混乱.

Example

first reader
second reader

func CopyN

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

CopyN copies n bytes (or until an error) from src to dst. It returns the number of bytes copied and the earliest error encountered while copying. On return, written == n if and only if err == nil.

如果dst实现了ReaderFrom接口,则使用该接口实现副本.

Example

some

func Pipe

func Pipe() (*PipeReader, *PipeWriter)

管道创建一个同步的内存管道. 它可以用来连接期望io.Reader的代码和期望io.Writer的代码.

管道上的读取和写入是一对一匹配的,除非需要多个读取来消耗单个写入. 也就是说,每次对PipeWriter的写入都将阻塞,直到它满足从PipeReader读取的一个或多个读取,这些读取会完全消耗已写入的数据. 数据直接从写入复制到相应的一个或多个读取; 没有内部缓冲.

可以并行或以关闭方式并行调用读取和写入是安全的. 并行调用Read和并行调用Write也是安全的:单个调用将按顺序进行门控.

Example

some text to be read

func ReadAtLeast

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

ReadAtLeast从r读取到buf,直到它至少读取了最小字节. 它返回复制的字节数,如果读取的字节数少则返回错误. 仅当未读取任何字节时,错误才是EOF. 如果在读取少于最小字节后发生EOF,则ReadAtLeast返回ErrUnexpectedEOF. 如果min大于buf的长度,则ReadAtLeast返回ErrShortBuffer. 返回时,当且仅当err == nil时,n> = min. 如果r返回至少读取了最小字节的错误,则丢弃该错误.

Example

some io.Reader stream to be read

error: short buffer
error: EOF

func ReadFull

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

ReadFull将r中的len(buf)个字节准确地读取到buf中. 它返回复制的字节数,如果读取的字节数少则返回错误. 仅当未读取任何字节时,错误才是EOF. 如果在读取了一些但不是全部字节后发生EOF,则ReadFull返回ErrUnexpectedEOF. 返回时,当且仅当err == nil时,n == len(buf). 如果r返回读取至少len(buf)个字节的错误,则该错误将被丢弃.

Example

some
error: unexpected EOF

func WriteString

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

WriteString将字符串s的内容写入w,w接受字节的一部分. 如果w实现了StringWriter,则直接调用其WriteString方法. 否则,w.Write只会被调用一次.

Example

Hello World

type ByteReader

ByteReader是包装ReadByte方法的接口.

ReadByte从输入或遇到的任何错误中读取并返回下一个字节. 如果ReadByte返回错误,则不消耗任何输入字节,并且返回的字节值不确定.

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

type ByteScanner

ByteScanner是将UnreadByte方法添加到基本ReadByte方法的接口.

UnreadByte导致下一次对ReadByte的调用返回与上一次对ReadByte的调用相同的字节. 两次调用UnreadByte而中间没有调用ReadByte可能是错误的.

type ByteScanner interface {
    ByteReader
    UnreadByte() error
}

type ByteWriter 1.1

ByteWriter是包装WriteByte方法的接口.

type ByteWriter interface {
    WriteByte(c byte) error
}

type Closer

Closer是包装基本Close方法的接口.

第一次调用后关闭的行为是不确定的. 特定的实现可以记录自己的行为.

type Closer interface {
    Close() error
}

type LimitedReader

LimitedReader从R读取但将返回的数据量限制为N个字节. 每次对Read的调用都会更新N以反映剩余的新数量. 当N <= 0或基础R返回EOF时,Read返回EOF.

type LimitedReader struct {
    R Reader // underlying reader
    N int64  // max bytes remaining
}

func (*LimitedReader) Read

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

type PipeReader

PipeReader是管道的读取部分.

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

func (*PipeReader) Close

func (r *PipeReader) Close() error

关闭关闭阅读器; 后续写入管道的写入部分将返回错误ErrClosedPipe.

func (*PipeReader) CloseWithError

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

CloseWithError关闭阅读器; 随后写入管道的一半写入操作将返回错误err.

func (*PipeReader) Read

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

Read实现标准的Read接口:它从管道读取数据,阻塞直到写入器到达或写入端关闭. 如果写端由于错误而关闭,则该错误将以err的形式返回; 否则err为EOF.

type PipeWriter

A PipeWriter is the write half of a pipe.

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

func (*PipeWriter) Close

func (w *PipeWriter) Close() error

Close关闭作者; 从管道读取的一半进行的后续读取将不返回任何字节和EOF.

func (*PipeWriter) CloseWithError

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

CloseWithError关闭编写器; 从管道读取的一半进行的后续读取将不返回任何字节,并且错误err;如果err为nil,则返回EOF.

CloseWithError始终返回nil.

func (*PipeWriter) Write

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

Write实现标准的Write接口:它将数据写入管道,阻塞直到一个或多个读取器消耗完所有数据或关闭读取端. 如果读取端因错误而关闭,则该err将作为err返回;否则,将返回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是将基本的Read和Write方法分组的接口.

type ReadWriter interface {
    Reader
    Writer
}

type Reader

Reader是包装基本Read方法的接口.

读取最多将len(p)个字节读入p. 它返回读取的字节数(0 <= n <= len(p))和遇到的任何错误. 即使Read返回n <len(p),也可能在调用过程中将所有p用作临时空间. 如果某些数据可用,但不是len(p)个字节,按常规,Read将返回可用数据,而不是等待更多数据.

成功读取n> 0个字节后,当Read遇到错误或文件结束条件时,它将返回读取的字节数. 它可能从同一调用返回(非nil)错误,或者从后续调用返回错误(且n == 0). 这种一般情况的一个实例是,读取器在输入流的末尾返回非零字节数的情况可能返回err == EOF或err == nil. 下一次读取应返回0,EOF.

在考虑错误err之前,调用者应始终处理返回的n> 0个字节. 这样做可以正确处理在读取某些字节后发生的I / O错误,以及两种允许的EOF行为.

不鼓励Read的实现不返回零字节计数且错误为nil,除非len(p)== 0除外.调用者应将返回值0和nil视为没有任何反应; 特别是它并不表示EOF.

实现不得保留p.

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

func LimitReader

func LimitReader(r Reader, n int64) Reader

LimitReader返回一个从r读取但在n字节后以EOF停止的Reader. 基础实现是* LimitedReader.

Example

some

func MultiReader

func MultiReader(readers ...Reader) Reader

MultiReader返回一个Reader,它是所提供的输入阅读器的逻辑串联. 它们被顺序读取. 一旦所有输入均返回EOF,读取将返回EOF. 如果任何读取器返回非零,非EOF错误,则Read将返回该错误.

Example

first reader second reader third reader

func TeeReader

func TeeReader(r Reader, w Writer) Reader

TeeReader返回一个Reader,该Reader向w写入从r读取的内容. 通过r执行的所有r读取都与对w的相应写入匹配. 没有内部缓冲-写入必须在读取完成之前完成. 写入时遇到的任何错误均报告为读取错误.

Example

some io.Reader stream to be read
some io.Reader stream to be read

type ReaderAt

ReaderAt是包装基本ReadAt方法的接口.

ReadAt从基础输入源中的offset off处读取len(p)个字节到p中. 它返回读取的字节数(0 <= n <= len(p))和遇到的任何错误.

当ReadAt返回n <len(p)时,它返回一个非nil错误,解释了为什么不返回更多字节. 在这方面,ReadAt比Read更严格.

即使ReadAt返回n <len(p),也可能在调用期间将所有p用作暂存空间. 如果某些数据可用但不是len(p)字节,则ReadAt会阻塞,直到所有数据可用或发生错误为止. 在这方面,ReadAt与Read不同.

如果ReadAt返回的n = len(p)个字节位于输入源的末尾,则ReadAt可能返回err == EOF或err == nil.

如果ReadAt正在从具有寻道偏移量的输入源读取数据,则ReadAt不应影响也不受底层寻道偏移量的影响.

ReadAt的客户端可以在同一输入源上执行并行ReadAt调用.

实现不得保留p.

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

type ReaderFrom

ReaderFrom是包装ReadFrom方法的接口.

ReadFrom从r读取数据,直到EOF或错误. 返回值n是读取的字节数. 读取期间遇到的除io.EOF以外的任何错误也将返回.

如果可用,复制功能将使用ReaderFrom.

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

type RuneReader

RuneReader是包装ReadRune方法的接口.

ReadRune读取单个UTF-8编码的Unicode字符,并返回符文及其大小(以字节为单位). 如果没有可用字符,将设置err.

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

type RuneScanner

RuneScanner是将UnreadRune方法添加到基本ReadRune方法的界面.

UnreadRune导致下一次对ReadRune的调用返回与上一次对ReadRune的调用相同的符文. 两次调用UnreadRune而不进行中间调用ReadRune可能是错误的.

type RuneScanner interface {
    RuneReader
    UnreadRune() error
}

type SectionReader

SectionReader在基础ReaderAt的一部分上实现Read,Seek和ReadAt.

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

Example

io.Reader stream

func NewSectionReader

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

NewSectionReader返回一个SectionReader,它从r开始读取,偏移量为off,在n个字节后以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)

Example

stream

func (*SectionReader) Seek

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

Example

stream

func (*SectionReader) Size

func (s *SectionReader) Size() int64

Size返回以字节为单位的节的大小.

type Seeker

Seeker是包装基本Seek方法的接口.

Seek将下一次"读取"或"写入"的偏移量设置为偏移量,并根据偏移量进行解释:SeekStart表示相对于文件开头的位置,SeekCurrent表示相对于当前偏移量的位置,SeekEnd表示相对于文件结尾的位置. Seek返回相对于文件开头的新偏移量,并返回错误(如果有).

在文件开始之前寻找偏移量是一个错误. 寻求任何正偏移都是合法的,但是对基础对象的后续I / O操作的行为取决于实现.

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

type StringWriter 1.12

StringWriter是包装WriteString方法的接口.

type StringWriter interface {
    WriteString(s string) (n int, err error)
}

type WriteCloser

WriteCloser是对基本Write和Close方法进行分组的接口.

type WriteCloser interface {
    Writer
    Closer
}

type WriteSeeker

WriteSeeker是将基本Write和Seek方法分组的接口.

type WriteSeeker interface {
    Writer
    Seeker
}

type Writer

Writer是包装基本Write方法的接口.

Write将p的len(p)个字节写入基础数据流. 它返回从p(0 <= n <= len(p))写入的字节数,以及遇到的任何导致写入提前停止的错误. 如果写返回n <len(p),则必须返回一个非nil错误. 写操作不得修改切片数据,即使是临时的.

实现不得保留p.

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

func MultiWriter

func MultiWriter(writers ...Writer) Writer

MultiWriter创建一个写入器,该写入器将其写入复制到所有提供的写入器中,类似于Unix tee(1)命令.

每个写入一次写入每个列出的写入器. 如果列出的写程序返回错误,则整个写操作将停止并返回错误; 它不会在列表中继续下去.

Example

some io.Reader stream to be read
some io.Reader stream to be read

type WriterAt

WriterAt是包装基本WriteAt方法的接口.

WriteAt将偏移量为off的len(p)个字节从p写入基础数据流. 它返回从p(0 <= n <= len(p))写入的字节数,以及遇到的任何导致写入提前停止的错误. 如果WriteAt返回n <len(p),则必须返回一个非nil错误.

如果WriteAt正在使用寻道偏移量写入目标,则WriteAt不应影响也不受底层寻道偏移量的影响.

如果范围不重叠,WriteAt的客户端可以在同一目标上执行并行WriteAt调用.

实现不得保留p.

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

type WriterTo

WriterTo是包装WriteTo方法的接口.

WriteTo将数据写入w,直到没有更多数据可写或发生错误为止. 返回值n是写入的字节数. 写入期间遇到的任何错误也将返回.

如果可用,复制功能将使用WriterTo.

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

Subdirectories

Name Synopsis
..
ioutil 软件包ioutil实现了一些I / O实用程序功能.

by  ICOPY.SITE