Mã:
//------------------------------------------------------------------------------------void CMySplitFileDlg::Split(CString Input,CString Output,int chunks){ CFile input,output; int FileSize,currentsize; int blocks; int ChunkSize; CString ChunkName; unsigned char data[BUFFER_SIZE]; CFileException fe; UpdateData(); //AfxMessageBox("Split to "+m_CHUNKS+" chunks); m_STATUS.Format("Split to %d chunks",chunks); UpdateData(FALSE); if(!input.Open(Input,CFile::modeRead | CFile::typeBinary,&fe)) { AfxMessageBox("Can't openfile !Maybe it's don't exist"); return; } FileSize=input.GetLength(); for (int chunk=0;chunk<chunks;chunk++) { ChunkName.Format("%s.%d",Output,chunk); if(!(output.Open( ChunkName, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary, &fe ) ) ) { AfxMessageBox("File can't creat !"); /* handle the error here */ return; } if(chunk<chunks-1) { ChunkSize=FileSize/chunks; }else{ ChunkSize=FileSize/chunks+FileSize%chunks; } //Read block to block blocks=ChunkSize/BUFFER_SIZE; m_STATUS="Splitting...!"; UpdateData(FALSE); for(int i=0;i<blocks+1;i++) { if(ChunkSize-BUFFER_SIZE*i<BUFFER_SIZE) { ZeroMemory(data,BUFFER_SIZE); // Make sure leftover garbage is empty input.Read((void*)data,(ChunkSize-BUFFER_SIZE*i)); currentsize=ChunkSize-i*BUFFER_SIZE;//odd DataSize }else{ currentsize=BUFFER_SIZE; input.Read((void*)data,BUFFER_SIZE); } output.Write((void*)&data,currentsize); } output.Close(); } input.Close(); AfxMessageBox("Split completed !"); m_STATUS="Splited !"; UpdateData(FALSE);}//------------------------------------------------------------------------------------void CMySplitFileDlg::Splice(CString Input,CString Output,int chunks){ CFile input,output; int ChunkSize,currentsize; int blocks; //char filetag[] = "SmallCode_ws"; unsigned char data[BUFFER_SIZE]; CFileException fe; UpdateData(); //AfxMessageBox("Split to "+m_CHUNKS+" chunks); m_STATUS.Format("Slice from %d chunks",chunks); UpdateData(FALSE); if(!(output.Open( Output, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary, &fe ) ) ) { AfxMessageBox("File can't creat !"); /* you should handle the error here */ return; } for (int chunk=0;chunk<chunks;chunk++) { CString ChunkName,temp; temp=Input.Left(Input.GetLength()-1); ChunkName.Format("%s%d",temp,chunk); if(!input.Open(ChunkName,CFile::modeRead | CFile::typeBinary,&fe)) { AfxMessageBox("Can't openfile !Maybe it's don't exist"); return; } //input.Read((void*)data,12);//remove filetag ChunkSize=input.GetLength(); blocks=ChunkSize/BUFFER_SIZE; for(int i=0;i<blocks+1;i++) { if(ChunkSize-BUFFER_SIZE*i<BUFFER_SIZE) { ZeroMemory(data,BUFFER_SIZE); // Make sure leftover garbage is empty input.Read((void*)data,(ChunkSize-BUFFER_SIZE*i)); currentsize=ChunkSize-i*BUFFER_SIZE;//odd DataSize }else{ currentsize=BUFFER_SIZE; input.Read((void*)data,BUFFER_SIZE); } output.Write((void*)data,currentsize); } input.Close(); } //Read block to block output.Close(); m_STATUS="Split completed !"; AfxMessageBox("Splice completed !"); UpdateData(FALSE); }
//----------------Have fun! ----------------------------------
Giảm giá khi mua pallet nhựa Trà Vinh Tại Trà Vinh, một trong những địa điểm nổi tiếng với ngành nông nghiệp và sản xuất, pallet nhựa Trà Vinh đóng vai trò không thể phủ nhận trong quá trình vận...
Giảm giá khi mua pallet nhựa Trà...