【Golang】复制文件不完整
本帖最后由 thepoy 于 2020-6-6 20:31 编辑使用`bufio`包创建Reader和Writer,再用`io.Copy(Writer, Reader)`完成复制,复制的文件和源文件大小会有几k的损失,请问大佬们这是为什么?
代码如下:
```go
func copyFile1(srcFileName, dstFileName string) (written int64, err error) {
srcfile, err := os.Open(srcFileName)
if err != nil {
log.Fatal(err)
}
// 获取Reader
reader := bufio.NewReader(srcfile)
defer srcfile.Close()
// 打开目标文件
dstfile, err := os.OpenFile(dstFileName, os.O_WRONLY|os.O_CREATE, 0666)
if err != nil {
log.Fatal(err)
}
// 获取Writer
writer := bufio.NewWriter(dstfile)
defer dstfile.Close()
return io.Copy(writer, reader)
}
func main() {
_, err := copyFile1("/home/thepoy/Pictures/1.png", "/home/thepoy/Downloads/test.png")
if err != nil {
log.Fatal(err)
return
}
}
```
源文件和复制后的文件:
```
654K6月6 10:46 1.png
652K6月6 10:54 test.png
```
### 已解决
在io.Copy前调用一下writer.Flush()冲洗一下解决此问题。
io.flush() 最后应该要冲刷一下吧,可以断言一下看看哪里不对。
页:
[1]