使用手机快播看完视频后,在p2pcache目录下形成若干个扩展名为!mv结尾的10M大小的文件,可以使用DOS的copy /b命令合并它们,但合并时有顺序问题(经验证并不是简单的按字典排序方式进行的),为此编写了以下VC6.0程序(高版本VC一样),只需要将该可执行EXE放在p2pcache的某个文件夹下运行即可:(源程序及exe在http://download.csdn.net/detail/dijkstar/4590633 下载)。程序的思路相当简单,都在注释中(仅对rmvb格式文件有效,其他格式没有试验过):
void CMergeDlg::OnButton1()
{
// TODO: Add your control notification handler code here
int i = 0;
CString strFile;
CFile file;
CString strSum;
CFileFind finder;
BOOL bWorking = finder.FindFile("*.!mv");
if (bWorking)
{
//
// 用来寻找 .!mv 前面的字符串部分(即文件名)
//
finder.FindNextFile();
CString strTmp = finder.GetFileName();
int start = strTmp.Find ("rmvb_");
CString strTmp2 = strTmp.Left(start);
CString strTmp3 = strTmp2 + "rmvb_";
//
// 从下标_0 开始查找.!mv 文件,
//
while (1)
{
strFile.Format("%s%d.!mv", strTmp3, i);
if (::GetFileAttributes((LPCTSTR )strFile) == -1)
{
break;
}
strSum += strFile;
strSum += "+";
i++;
}
//将最后一个“+”去掉
if (strSum.GetLength()-1 == strSum.ReverseFind('+'))
{
strSum.TrimRight("+");
}
//
// 形成DOS命令的参数 “copy/b 1.x+2.x+3.x+.......+n.x 目的文件”
//
CString str = "copy/b ";
str += strSum;
str += " ";
str += strTmp2;
str += "rmvb";
//
// 执行 Copy命令
//
system(str);
}
else
{
AfxMessageBox("未找到*.!mv文件");
}
}