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! ----------------------------------
Dưới ánh nắng mặt trời đang lên, những đống pallet nhựa An Giang trải dài mênh mông như những bức tranh tự nhiên đầy sắc màu. Mỗi chiếc pallet nhựa không chỉ là một vật dụng thông thường mà còn là...
Pallet nhựa An Giang giao hàng...