VC 写 TXT 文件分割器 附代码

TXT文件分割器主要将很大的TXT文档分割成预定大小的文档

主要通过cfile类来实现

VC 写 TXT 文件分割器 附代码_第1张图片

这就是最后的效果。

选择路径主要通过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);  


有的地方木有注释,看起来不是很好 ,这个是备份的,原本的被我删除了

 

代码在下面

 

 下载地址

 

 

你可能感兴趣的:(File,null,BI,文档,Path)