文件复制,分别采用不带缓冲和带缓冲的方式编写。
// file_io project main.go /* package main import ( "fmt" "log" "os" ) func main() { fmt.Println("Hello World!") file, err := os.Open("E:/go_data/test.py") if err != nil { fmt.Printf("open test.py err.\n") log.Fatal(err) } file_out, err := os.Create("e:/go_data/test2.py") if err != nil { fmt.Printf("open test2.py err.\n") log.Fatal(err) } data := make([]byte, 100) var count int var n int for { count, err = file.Read(data) fmt.Printf("count=%v\n", count) if err != nil { break } n, err = file_out.Write(data[0:count]) fmt.Printf("n=%v\n", n) if err != nil { break } } file.Close() file_out.Close() } */ /* package main import ( "bufio" "fmt" "log" "os" ) func main() { fmt.Println("Hello World!") file, err := os.Open("E:/go_data/test.py") if err != nil { fmt.Printf("open test.py err.\n") log.Fatal(err) } file_out, err := os.Create("e:/go_data/test2.py") if err != nil { fmt.Printf("open test2.py err.\n") log.Fatal(err) } data := make([]byte, 100) var count int var n int var reader *bufio.Reader var writer *bufio.Writer reader = bufio.NewReaderSize(file, 1024) writer = bufio.NewWriterSize(file_out, 1024) for { count, err = reader.Read(data) fmt.Printf("count=%v\n", count) if err != nil { fmt.Printf("err=%v\n", err) break } n, err = writer.Write(data[0:count]) fmt.Printf("n=%v\n", n) if err != nil { fmt.Printf("err=%v\n", err) break } } writer.Flush() file.Close() file_out.Close() } */ package main import ( "bufio" "fmt" "log" "os" ) func main() { fmt.Println("Hello World!") file, err := os.Open("E:/go_data/test.py") if err != nil { fmt.Printf("open test.py err.\n") log.Fatal(err) } file_out, err := os.Create("e:/go_data/test2.py") if err != nil { fmt.Printf("open test2.py err.\n") log.Fatal(err) } var reader *bufio.Reader var writer *bufio.Writer reader = bufio.NewReaderSize(file, 1024) writer = bufio.NewWriterSize(file_out, 1024) reader.WriteTo(writer) writer.Flush() file.Close() file_out.Close() }