文件复制,分别采用不带缓冲和带缓冲的方式编写。
// 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()
}