本文共 1456 字,大约阅读时间需要 4 分钟。
分别使用和不使用buff来复制文件,将可能造成mov视频文件有不知名错误。
以下为一般的拷贝并删除方法,拷贝后的文件没有错误。
func CutFileCom(srcFilePath string, dstFilePath string) error { srcFile, err := os.Open(srcFilePath) if err != nil { fmt.Printf("打开源文件错误,错误信息=%v\n", err) return err } //defer srcFile.Close() dstFile, err := os.OpenFile(dstFilePath, os.O_WRONLY|os.O_CREATE, 0777) if err != nil { fmt.Printf("打开目标文件错误,错误信息=%v\n", err) return err } defer dstFile.Close() _, err = io.Copy(dstFile, srcFile) if err != nil { fmt.Printf("复制目标文件错误,错误信息=%v\n", err) return err } //删除 srcFile.Close() err = os.Remove(srcFilePath) if err != nil { fmt.Printf("删除目标文件错误,错误信息=%v\n", err) return err } err = nil return err}
以下为使用bufio方法复制并删除文件,其它文件暂未发现有什么问题,主要是mov视频文件用此方法拷贝后将无法使用windows10自带播放器播放,会提示出错,也不会生成缩略图;只能使用potplayer打开。
func CutFileBufio(srcFilePath string, dstFilePath string) error { srcFile, err := os.Open(srcFilePath) if err != nil { fmt.Printf("打开源文件错误,错误信息=%v\n", err) return err } reader := bufio.NewReader(srcFile) dstFile, err := os.OpenFile(dstFilePath, os.O_WRONLY|os.O_CREATE, 0777) if err != nil { fmt.Printf("打开目标文件错误,错误信息=%v\n", err) return err } writer := bufio.NewWriter(dstFile) defer dstFile.Close() _, err = io.Copy(writer, reader) if err != nil { fmt.Printf("复制目标文件错误,错误信息=%v\n", err) return err } //删除 srcFile.Close() err = os.Remove(srcFilePath) if err != nil { fmt.Printf("删除目标文件错误,错误信息=%v\n", err) return err } err = nil return err}
转载地址:http://htkpi.baihongyu.com/