知识点 断点续传

。_饼干妹妹 提交于 2019-11-27 15:44:24
package mainimport (   "fmt"   "io"   "os"   "strconv")func main() {   /*      思路:断点续传,边复制,边记录复制的数据量   */   srcName := "C:\\liu\\pro\\aa.jpeg"   destName := "C:\\liu\\bb.jpeg"   file1, _ := os.Open(srcName)                                            //目标文件打开   file2, _ := os.OpenFile(destName, os.O_WRONLY|os.O_CREATE, os.ModePerm) //要把文件复制到哪里,创建一个新文件   tempName := destName + "temp.txt"                                       //C:\\liu\\bb.jpegtemp.txt   file3, _ := os.OpenFile(tempName, os.O_RDWR|os.O_CREATE, os.ModePerm)   //新建临时文件   defer file1.Close()   defer file2.Close()   //defer file3.Close()   //1.从临时文件中读取已经存储的上次的拷贝的数据量   totalBytes := make([]byte, 100)   count1, _ := file3.Read(totalBytes)     // 将已经拷贝的数据量读取到数组中   totalStr := string(totalBytes[:count1]) // 从数组中获取读取的数量量,-->string   total, _ := strconv.Atoi(totalStr)      //int   fmt.Println("上次已经复制的数据量", total)   //2.设置读写的位置   file1.Seek(int64(total), 0)   file2.Seek(int64(total), 0)   dataBytes := make([]byte, 1024)   for {      count2, err := file1.Read(dataBytes)      if err == io.EOF {         fmt.Println("已经复制到文件末尾。。", total)         file3.Close()         os.Remove(tempName)         break      }      file2.Write(dataBytes[:count2])      total += count2      file3.Seek(0, 0)      totalStr = strconv.Itoa(total)      file3.WriteString(totalStr)      //if total > 30000{      // panic("意外断点了,,假装的。。。。")      //}   }}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!