Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: File splitter-Công cụ cắt nhỏ file

  1. #1
    Ngày gia nhập
    02 2009
    Bài viết
    75

    Red face 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õ )
    -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
    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 :
    C++ Code:
    1. //------------------------------------------------------------------------------------
    2. void CMySplitFileDlg::Split(CString Input,CString Output,int chunks)
    3. {
    4.     CFile input,output;
    5.     int FileSize,currentsize;
    6.     int blocks;
    7.     int ChunkSize;
    8.     CString ChunkName;
    9.     unsigned char data[BUFFER_SIZE];
    10.     CFileException fe;
    11.     UpdateData();
    12.     //AfxMessageBox("Split to "+m_CHUNKS+" chunks);
    13.     m_STATUS.Format("Split to %d chunks",chunks);
    14.     UpdateData(FALSE);
    15.     if(!input.Open(Input,CFile::modeRead | CFile::typeBinary,&fe))
    16.     {
    17.      AfxMessageBox("Can't openfile !Maybe it's don't exist");
    18.      return;
    19.     }
    20.  
    21.     FileSize=input.GetLength();
    22.     for (int chunk=0;chunk<chunks;chunk++)
    23.     {    
    24.         ChunkName.Format("%s.%d",Output,chunk);
    25.         if(!(output.Open( ChunkName, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary, &fe ) ) )
    26.         {
    27.           AfxMessageBox("File can't creat !");
    28.         /* handle the error here */
    29.           return;
    30.         }
    31.            
    32.          if(chunk<chunks-1)
    33.          {
    34.           ChunkSize=FileSize/chunks;
    35.          }else{
    36.           ChunkSize=FileSize/chunks+FileSize%chunks;
    37.          }
    38.          //Read block to block
    39.          blocks=ChunkSize/BUFFER_SIZE;
    40.          m_STATUS="Splitting...!";
    41.          UpdateData(FALSE);
    42.    
    43.         for(int i=0;i<blocks+1;i++)
    44.         {
    45.             if(ChunkSize-BUFFER_SIZE*i<BUFFER_SIZE)
    46.             {
    47.             ZeroMemory(data,BUFFER_SIZE); // Make sure leftover garbage is empty
    48.             input.Read((void*)data,(ChunkSize-BUFFER_SIZE*i));
    49.             currentsize=ChunkSize-i*BUFFER_SIZE;//odd DataSize
    50.             }else{
    51.             currentsize=BUFFER_SIZE;
    52.             input.Read((void*)data,BUFFER_SIZE);
    53.          
    54.             }
    55.                output.Write((void*)&data,currentsize);
    56.         }
    57.         output.Close();
    58.     }
    59.      input.Close();
    60.      AfxMessageBox("Split completed !");
    61.      m_STATUS="Splited !";
    62.      UpdateData(FALSE);
    63. }
    64. //------------------------------------------------------------------------------------
    65. void CMySplitFileDlg::Splice(CString Input,CString Output,int chunks)
    66. {
    67.     CFile input,output;
    68.     int ChunkSize,currentsize;
    69.     int blocks;
    70.     //char filetag[] = "SmallCode_ws";
    71.     unsigned char data[BUFFER_SIZE];
    72.     CFileException fe;
    73.     UpdateData();
    74.     //AfxMessageBox("Split to "+m_CHUNKS+" chunks);
    75.     m_STATUS.Format("Slice from %d chunks",chunks);
    76.     UpdateData(FALSE);
    77.  
    78.     if(!(output.Open( Output, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary, &fe ) ) )
    79.     {
    80.       AfxMessageBox("File can't creat !");
    81.         /* you should handle the error here */
    82.       return;
    83.     }  
    84.    
    85.     for (int chunk=0;chunk<chunks;chunk++)
    86.     {    
    87.          CString ChunkName,temp;
    88.          temp=Input.Left(Input.GetLength()-1);
    89.          ChunkName.Format("%s%d",temp,chunk);
    90.          if(!input.Open(ChunkName,CFile::modeRead | CFile::typeBinary,&fe))
    91.          {
    92.            AfxMessageBox("Can't openfile !Maybe it's don't exist");
    93.            return;
    94.          }
    95.          //input.Read((void*)data,12);//remove filetag
    96.          ChunkSize=input.GetLength();
    97.          blocks=ChunkSize/BUFFER_SIZE;
    98.          for(int i=0;i<blocks+1;i++)
    99.          {
    100.            if(ChunkSize-BUFFER_SIZE*i<BUFFER_SIZE)
    101.            {
    102.             ZeroMemory(data,BUFFER_SIZE); // Make sure leftover garbage is empty
    103.             input.Read((void*)data,(ChunkSize-BUFFER_SIZE*i));
    104.             currentsize=ChunkSize-i*BUFFER_SIZE;//odd DataSize
    105.            }else{
    106.             currentsize=BUFFER_SIZE;
    107.             input.Read((void*)data,BUFFER_SIZE);
    108.            }
    109.            output.Write((void*)data,currentsize);
    110.          }
    111.          input.Close();
    112.     }
    113.          //Read block to block
    114.          output.Close();
    115.          m_STATUS="Split completed !";
    116.          AfxMessageBox("Splice completed !");
    117.          UpdateData(FALSE);
    118.    
    119. }
    //----------------Have fun! ----------------------------------
    Đã được chỉnh sửa lần cuối bởi meoconlongvang : 16-05-2009 lúc 10:45 PM. Lý do: Sửa lại tag code

    chán code, ghét máy tính rồi

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Bạn vui lòng đổi link qua host khác như mediafire hay 4share chẳng hạn, RS khó down lắm.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    02 2009
    Bài viết
    75

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    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
    Link mediafire :
    http://www.mediafire.com/?sharekey=4...4e75f6e8ebb871

    chán code, ghét máy tính rồi

  4. #4
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    tham khảo topic này, C++ chuẩn xử lý cỡ 2.1 GB
    http://forums.congdongcviet.com/showthread.php?t=11588
    None!

  5. #5
    Ngày gia nhập
    02 2009
    Bài viết
    75

    Trích dẫn Nguyên bản được gửi bởi Xcross87 Xem bài viết
    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
    Lục hết máy kiếm được cái CodeGear 2G cắt thử --> ngon
    còn trên nữa thì ko kiếm được để thử
    Đã được chỉnh sửa lần cuối bởi DarkWizard : 17-05-2009 lúc 12:06 AM.

    chán code, ghét máy tính rồi

Các đề tài tương tự

  1. Cách add file thư viện dll vào file exe để tạo một file chạy duy nhất C#
    Gửi bởi nthung2112 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 20
    Bài viết cuối: 01-09-2012, 10:01 AM
  2. File backup .bak có dung lương lớn hơn file .mdb và file log
    Gửi bởi MYNAM trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 4
    Bài viết cuối: 27-07-2012, 12:59 PM
  3. Đọc dữ liệu file midi dạng số HEX và lấy lời nhạc trong file ra file text
    Gửi bởi kimngockhtn_2007 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 29-06-2011, 04:40 PM
  4. File server để dùng ajax trong visual2010 là file gì, xử lý kết nối với SQLserver như thế nào?
    Gửi bởi lenamshenlong trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 9
    Bài viết cuối: 26-05-2011, 05:14 PM
  5. Trả lời: 17
    Bài viết cuối: 23-05-2011, 11:47 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn