TXT文件分割器主要将很大的TXT文档分割成预定大小的文档
主要通过cfile类来实现
这就是最后的效果。
选择路径主要通过cfiledlg类来实现
// TODO: Add your control notification handler code here
CFileDialog file_dlg(true , NULL , NULL , OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT ,NULL , NULL);
if (file_dlg.DoModal() == IDOK)
{
filepath = file_dlg.GetPathName() ;
}
m_path = filepath ;
UpdateData(false);
// TODO: Add your control notification handler code here
CFileDialog file_dlg(true , NULL , NULL , OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT ,NULL , NULL);
if (file_dlg.DoModal() == IDOK)
{
filepath = file_dlg.GetPathName() ;
}
m_path = filepath ;
UpdateData(false); // TODO: Add your control notification handler code here
CFileDialog file_dlg(true , NULL , NULL , OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT ,NULL , NULL);
if (file_dlg.DoModal() == IDOK)
{
filepath = file_dlg.GetPathName() ;
}
m_path = filepath ;
UpdateData(false);m_path 是源文件的控件变量
保存目录这部分代码是借鉴网上的
BROWSEINFO bi;
bi.hwndOwner = this->GetSafeHwnd();
bi.pidlRoot = NULL;
bi.pszDisplayName = NULL;
bi.lpszTitle = TEXT("请选择文件夹");
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT ;
bi.lpfn = NULL;
bi.lParam = 0 ;
bi.iImage = 0 ;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
if (pidl == NULL)
{
return ;
}
char s[100];
if ( SHGetPathFromIDList(pidl , s) )
{
m_path1 = s ;
}
UpdateData(false);
m_path1是生成文件夹的控件变量
开始分割按钮主要实现下面代码:
index = m_com.GetCurSel() + 1 ;
CFile infile;
file.Open(filepath , CFile::modeCreate | CFile::modeNoTruncate | CFile::modeReadWrite );
CString str,ss,s;
str.Format("文件大小为%.2fkb",file.GetLength() / 1024.0 );
GetDlgItem(IDC_STATIC1)->SetWindowText(str);
int n;
char buff[1024];
ss = m_path1 + "\\";
ss += file.GetFileName() ;
ss = ss.Left(ss.GetLength() - 4) ;
ss += "_";
for (int i = 0 ; i <= file.GetLength() / index /1024 ; ++i )
{
str = ss ;
s.Format("%d",i);
str += s;
str += ".txt";
infile.Open(str , CFile::modeCreate | CFile::modeNoTruncate | CFile::modeReadWrite );
for (int j = 0 ; j < index ; ++j )
{
n = file.Read(buff , 1024);
infile.Write(buff,n);
}
infile.Close();
}
file.Close();
当然在初始化里面的代码主要实现下拉框里面的内容
CString s;
//添加默认的分割后文件的大小
for (int i = 1 ; i <= 100 ; ++i )
{
s.Format("%dkb",i);
m_com.InsertString(i - 1 , s);
}
//下拉框默认设置100kb
m_com.SetCurSel(99);
有的地方木有注释,看起来不是很好 ,这个是备份的,原本的被我删除了
代码在下面
下载地址