io操作使用例子
-
package main
-
-
import (
-
"bytes"
-
"fmt"
-
"io"
-
"io/ioutil"
-
"log"
-
"os"
-
"strings"
-
)
-
-
func ExampleCopy() {
-
r := strings.NewReader("some io.Reader stream to be read\n")
-
-
if _, err := io.Copy(os.Stdout, r); err != nil {
-
log.Fatal(err)
-
}
-
-
// Output:
-
// some io.Reader stream to be read
-
}
-
-
func ExampleCopyBuffer() {
-
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
-
}
-
-
func ExampleCopyN() {
-
r := strings.NewReader("some io.Reader stream to be read")
-
-
if _, err := io.CopyN(os.Stdout, r, 5); err != nil {
-
log.Fatal(err)
-
}
-
-
// Output:
-
// some
-
}
-
-
func ExampleReadAtLeast() {
-
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)
-
-
// buffer smaller than minimal read size.
-
shortBuf := make([]byte, 3)
-
if _, err := io.ReadAtLeast(r, shortBuf, 4); err != nil {
-
fmt.Println("error:", err)
-
}
-
-
// minimal read size bigger than io.Reader stream
-
longBuf := make([]byte, 64)
-
if _, err := io.ReadAtLeast(r, longBuf, 64); err != nil {
-
fmt.Println("error:", err)
-
}
-
-
// Output:
-
// some io.Reader stream to be read
-
//
-
// error: short buffer
-
// error: EOF
-
}
-
-
func ExampleReadFull() {
-
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 stream
-
longBuf := make([]byte, 64)
-
if _, err := io.ReadFull(r, longBuf); err != nil {
-
fmt.Println("error:", err)
-
}
-
-
// Output:
-
// some
-
// error: unexpected EOF
-
}
-
-
func ExampleWriteString() {
-
io.WriteString(os.Stdout, "Hello World")
-
-
// Output: Hello World
-
}
-
-
func ExampleLimitReader() {
-
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)
-
}
-
-
// Output:
-
// some
-
}
-
-
func ExampleMultiReader() {
-
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)
-
}
-
-
// Output:
-
// first reader second reader third reader
-
}
-
-
func ExampleTeeReader() {
-
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)
-
-
// Output:
-
// some io.Reader stream to be read
-
// some io.Reader stream to be read
-
}
-
-
func ExampleSectionReader() {
-
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)
-
}
-
-
// Output:
-
// io.Reader stream
-
}
-
-
func ExampleSectionReader_ReadAt() {
-
r := strings.NewReader("some io.Reader stream to be read\n")
-
s := io.NewSectionReader(r, 5, 16)
-
-
fmt.Println("-----")
-
if _, err := io.Copy(os.Stdout, s); err != nil {
-
log.Fatal(err)
-
}
-
fmt.Println()
-
-
buf := make([]byte, 6)
-
if _, err := s.ReadAt(buf, 10); err != nil {
-
log.Fatal(err)
-
}
-
-
fmt.Printf("%s\n", buf)
-
-
// Output:
-
// stream
-
}
-
-
func ExampleSectionReader_Seek() {
-
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)
-
-
// Output:
-
// stream
-
}
-
-
func ExampleSeeker_Seek() {
-
r := strings.NewReader("some io.Reader stream to be read\n")
-
if _, err := io.Copy(os.Stdout, r); err != nil {
-
log.Fatal(err)
-
}
-
-
r.Seek(15, io.SeekStart)
-
if _, err := io.Copy(os.Stdout, r); err != nil {
-
log.Fatal(err)
-
}
-
-
r.Seek(-5, io.SeekEnd)
-
if _, err := io.Copy(os.Stdout, r); err != nil {
-
log.Fatal(err)
-
}
-
-
// Output:
-
// some io.Reader stream to be read
-
// stream to be read
-
// read
-
}
-
-
func ExampleMultiWriter() {
-
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())
-
-
// Output:
-
// some io.Reader stream to be read
-
// some io.Reader stream to be read
-
}
-
-
func main() {
-
ExampleCopy()
-
ExampleCopyBuffer()
-
ExampleCopyN()
-
ExampleReadAtLeast()
-
ExampleReadFull()
-
ExampleWriteString()
-
fmt.Println()
-
ExampleLimitReader()
-
ExampleMultiReader()
-
ExampleTeeReader()
-
ExampleSectionReader()
-
fmt.Println()
-
ExampleSectionReader_ReadAt()
-
ExampleSeeker_Seek()
-
ExampleMultiWriter()
-
}
执行结果:
some io.Reader stream to be read
first reader
second reader
some some io.Reader stream to be read
error: short buffer
error: EOF
some
error: unexpected EOF
Hello World
somefirst reader second reader third reader
some io.Reader stream to be read
some io.Reader stream to be read
io.Reader stream
-----
io.Reader stream
stream
some io.Reader stream to be read
stream to be read
read
some io.Reader stream to be read
some io.Reader stream to be read
成功: 进程退出代码 0.
阅读(353) | 评论(0) | 转发(0) |