bufioio.Copy(Writer, Reader)
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()冲洗一下解决此问题。