本帖最后由 thepoy 于 2020-6-6 20:31 编辑
使用bufio 包创建Reader和Writer,再用io.Copy(Writer, Reader) 完成复制,复制的文件和源文件大小会有几k的损失,请问大佬们这是为什么?
代码如下:
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
}
}
源文件和复制后的文件:
654K 6月 6 10:46 1.png
652K 6月 6 10:54 test.png
已解决
在io.Copy前调用一下writer.Flush()冲洗一下解决此问题。
|