~~~
func copyFile(srcFileName string, dstFileName string) (written int64, err error) {
srcFile, err := os.Open(srcFileName)
if err != nil {
fmt.Printf("open file error = %v\n", err)
}
defer srcFile.Close()
//通过srcFile,获取到READER
reader := bufio.NewReader(srcFile)
//打开dstFileName
dstFile, err := os.OpenFile(dstFileName, os.O_WRONLY|os.O_CREATE, 0666)
if err != nil {
fmt.Printf("open file error = %v\n", err)
return
}
//通过dstFile,获取到WRITER
writer := bufio.NewWriter(dstFile)
//writer.Flush()
defer dstFile.Close()
return io.Copy(writer, reader)
}
~~~
没见过这种的。要么就定义一个数字,表示长度。在copy时,自己写个方法时刻修改copy长度。然后再启动一个协程,读取长度,也不会有啥冲突。你这种的官方包貌似没有返回进度的。只能自己写了
#1