根據妳設定的字節數分割:
bool CCutFile::CutBySize(CString SourceFile, CString StorePath, int FileSize)
{
fstream RcFile;
fstream ToFile;
char *buff; //用於記錄讀取的字符串
int size=FileSize*1024; //分割後每個文件的字節數
buff=new char[size+2];
RcFile.open(SourceFile,ios::in|ios::binary); //打開源文件
if(!RcFile) // 文件打開判斷
return false;
int n=0,i=1; //由i得到分割後文件名的數字後綴
while(!RcFile.eof())
{
RcFile.read(buff,size);
n=RcFile.gcount();
if(buff[n-1]<0||buff[n-1]>256) //判斷最後壹個字符是否是漢字壹部分,如果是,則從
{ //最後壹個字符開始往前找,直到找到第壹個不是中文
int j=n-1; //字符為止。然後用buff讀取的總字節數減去找到的那個
do //英文字符的下標,得到該字符到最後壹個字符之間的總
{ //的中文字節的個數,如果為奇數,則最後壹個字符是漢字
j--; //的前壹部分,這時將文件指針向前移壹位。並將最後壹個
}while(buff[j]<0||buff[j]>256); //字符設成空格符。
if((n-1-j)%2!=0)
{
RcFile.seekg(-1,ios::cur);
buff[n-1]=' ';
}
}
CString NewName=StorePath;
if(NewName.Right(1)!='\\') //判斷得到的保存文件夾的路徑的最後壹個字符是否是'\'
{
NewName+='\\';
}
CString cs;
cs.Format("%d",i);
NewName+=FileName+'_'+cs+".txt"; //得到第i個文件的路徑。
ToFile.open(NewName,ios::out|ios::binary); //打開第i個文件.
if(!ToFile)
return false;
ToFile.write(buff,n); //將讀取的內容寫入到第i個文件中
ToFile.close();
i++;
}
delete []buff;
RcFile.close();
if(m_DeleteSourceFile)
{
if(!::DeleteFile(m_SourcePath))MessageBox("刪除失敗","信息提示",MB_OK);
}
return true;
}
妳想要這個工程的源代碼的話把妳郵箱告訴我,我給妳發過去