Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 5 của 5
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    File splitter-Công cụ cắt nhỏ file

    Mấy hôm nay nghiên cứu về MFC thấy cũng hay hay (trcs giờ toàn chơi với Delphi và java thui à) vùa hoc vừa viết thử vài cái ứng dụng nho nhỏ .Mất cả buổi làm cái file split & Slice post lên đây anh em coi cho vui .Tác dụng :
    -Chia nhỏ file (đã thử với boot.ini 213byte -->~1G film OK còn trên thì ko rõ [IMG]images/smilies/17.gif[/IMG] )
    -Số lượng file tùy ý
    -Slice các file thành phần(* .0,*.1,*.2...) lại thành file ban đầu và run [IMG]images/smilies/tongue.png[/IMG]
    Vì em mới thực sự chơi với MFC được tuần nay nneen chương trình còn gà .Mong được các bác góp ý
    Link :
    http://rapidshare.com/files/23366944...tFile.rar.html
    Code :

    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! ----------------------------------

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn vui lòng đổi link qua host khác như mediafire hay 4share chẳng hạn, RS khó down lắm.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi meoconlongvang
    Bạn vui lòng đổi link qua host khác như mediafire hay 4share chẳng hạn, RS khó down lắm.
    Ở chỗ mình buổi tối mediafire ko dơn được [IMG]images/smilies/smile.png[/IMG]
    Link mediafire :
    http://www.mediafire.com/?sharekey=4...4e75f6e8ebb871

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    tham khảo topic này, C++ chuẩn xử lý cỡ 2.1 GB
    http://forums.congdongcviet.com/showthread.php?t=11588

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi Xcross87
    tham khảo topic này, C++ chuẩn xử lý cỡ 2.1 GB
    http://forums.congdongcviet.com/showthread.php?t=11588
    Link đó em xem rồi [IMG]images/smilies/biggrin.png[/IMG]
    Lục hết máy kiếm được cái CodeGear 2G cắt thử --> ngon [IMG]images/smilies/smile.png[/IMG] [IMG]images/smilies/smile.png[/IMG]
    còn trên nữa thì ko kiếm được để thử [IMG]images/smilies/biggrin.png[/IMG]

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •