最近發現手機越來越卡,后來發現是QQ占用的內存太大了,尤其是居然有1.5G之多的shortvideo短視頻,我這種人,老覺得這都是生活的記錄,舍不得刪,
那就導入到電腦上吧,但是導入之后發現是這個樣子的。。。
點開之后是這個樣子的:
學編程的怎么可能一個個的復制粘貼出來,當然是讓程序替我們干這種活啊,大概想了一下思路: 首先在shortvideo文件夾下進行一次磁盤遍歷,然后每找到一個mp4文件就把它復制出去到指定的目錄下。 那么就是兩個函數,一個遍歷函數,一個復制函數
文件查找是大一時學過的,直接拿來用,復制的話就是把mp4文件以二進制方式讀取,存入到一個超大的數組里,然后再以二進制的方式寫入新目錄。幾行代碼輕松搞定
直接上代碼吧,萬一以后自己又要用 (一個多G,十幾秒左右就完成復制了,膜…)
#include<stdio.h>#include<string.h>#include<io.h>#include<iostream>#include<string>using namespace std;char ch[9999999999];char str[260];char newstr[260];void take(char Dir[],char newDir[])//復制函數{ FILE *f1,*f2; f1=fopen(Dir,"rb"); f2=fopen(newDir,"wb"); fseek(f1,0L,SEEK_END); int lens=ftell(f1);//取出原文件大小 rewind(f1); fread(ch,lens,1,f1); fwrite(ch,lens,1,f2); fclose(f1);fclose(f2);}void SearchDir(char *dir)//遍歷函數{ _finddata_t ffblk;//文件結構體定義一個對象 long handle;//句柄 char tmp[1000]; strcpy(tmp, dir); strcat(tmp, "http://*.*"); handle = _findfirst(tmp,&ffblk); long flag = 0; while (!flag) { if (ffblk.attrib == _A_SUBDIR) { if(strcmp(ffblk.name,".") == 0 || strcmp(ffblk.name,"..") == 0){ //篩掉這兩個默認的文件夾,一個為當前目錄,一個為上一級目錄 flag = _findnext(handle, &ffblk); continue; } //寫的比較潦草 哦,再附張結果圖。。新聞熱點
疑難解答