亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

怎樣在DELPHI中實現文件切割/組合

2019-11-17 05:05:20
字體:
來源:轉載
供稿:網友
  一、 文件切割/組合原理

  所謂文件切割,就是把一個文件切割成若干個小文件。做法就是將一個文件對象以"文件流"的方式讀出,然后按照一定的塊(Block)大小分別存成文件。文件組合,就是把若干個文件組合成一個文件。比如像打包工具(Wise)用到的就是這個原理。假如大家對"流"這個概念熟悉的話,那么實現起來就很輕易了,以下就是實現步驟?! 《?、 實現

  在Delphi中新建一個工程,然后在窗體中加入兩個BUTTON,一個EDIT,一個OPENDIALOG,一個SAVEDIALOG,再將BUTTON1的CAPTION改為"切割",BUTTON2的CAPTION改為"組合"(注:其它控件的屬性略)。再雙擊BUTTON1和BUTTON2,寫下如下代碼:
//切割文件
PRocedure TForm1.Button1Click(Sender: TObject);
 var
  i, WantedFragSize, RealToWrite : Integer;
  //聲明兩個文件流對象
  //InStream為輸入源文件流對象,OutStream為輸出切割文件流對象
  InStream, OutStream : TFileStream;
  S : String;
 begin
  if Opendialog1.Execute then
  begin
   SaveDialog1.Title := '輸入你要保存的切割文件名';
   If SaveDialog1.Execute then
   begin
    WantedFragSize := StrtoInt(Edit1.Text); //定義切割塊大小
    i := 0;
    //以只讀的方式創建一個輸入文件流對象
    InStream:=TFileStream.Create(
    OpenDialog1.FileName,fmOpenRead);
    Try
     //假如Instream流的當前指針位置不在末尾,就按照定義的塊大小//來讀出數據并存成文件
     while (InStream.Position < InStream.Size) do
     Begin
      s := IntToStr(I);
      while Length(s) < 3 do s := '0'+s;
      s := '.'+s;
      //生成切割文件的擴展名,用三位數字來作為擴展名,方便組合文件
      //假如InStream所剩的塊大小小于定義的塊大小,則將剩下的塊數//據存成文件
      If InStream.Size - InStream.Position < WantedFragSize then
       RealToWrite := InStream.Size - InStream.Position
      else
       RealToWrite := WantedFragSize;
       //創建一個輸出文件流對象
       OutStream:=TFileStream.Create(SaveDialog1.FileName+s,fmCreate);
       try
        OutStream.CopyFrom(InStream,RealToWrite);
        Inc(i);
       Finally
        //釋放輸出文件流對象
        OutStream.Free;
        end;
       end;
      Finally
       InStream.Free;
      end;
     end;
    end;
   end; //組合文件
procedure TForm1.Button2Click(Sender: TObject);
var
 i : Integer;
 InStream, OutStream : TFileStream;
 SourcePath, FragName, S : String;
 begin
  Opendialog1.Title := '請選擇切割文件';
  if Opendialog1.Execute then
  begin
   //得到當前打開的切割文件的路徑
   SourcePath := ExtractFilePath(Opendialog1.FileName);
   //得到當前打開的切割文件的文件名
   FragName := ExtractFileName(Opendialog1.FileName);
   SaveDialog1.Title := '請輸入你要組合的文件名';
   If SaveDialog1.Execute then
   begin
    i := 0;
    s := IntToStr(I);
    while Length(s) < 3 do s := '0'+s;
     s := '.'+s;
     FragName := ChangeFileExt(FragName, s);
     //假如目錄中有以.000為擴展名的文件存在,則創建一個輸出文件流//對象
     If FileExists(SourcePath+FragName) then
     begin
      OutStream:=TFileStream.Create(Savedialog1.FileName,fmCreate);
     Try
      //按照以文件擴展名遞增的方式組合文件
      While FileExists(SourcePath+FragName) do
      Begin
       InStream:=TFileStream.Create(SourcePath+FragName,fmOpenRead);
      Try
       //將輸入文件流的數據寫入到輸出文件流中
       OutStream.CopyFrom(InStream,0);
       Inc(i);
       s := IntToStr(I);
       while Length(s) < 3 do s := '0'+s;
        s := '.'+s;
        FragName := ChangeFileExt(FragName, s);
      finally
       InStream.Free;
      end;
     end;
    finally
     OutStream.Free;
    end;
   end;
  end;
 end;
end;
  {*注釋:請注重COPYFROM方法的使用,當第二個參數為0時,表示將輸入流InStream的數據全部寫入輸出流OutStream;當大于0為N時,表示從輸入流InStream的當前流指針位置開始,將N個字節數據寫入輸出流OutStream,并且InStream的流指針會向后偏移N個字節位數。具體解釋請查看DELPHI自帶的幫助*}  三、結束語

  在我們用到的很多日常工具中,有很多都會用到的"流"這個對象,它的作用也非常大,例如文件加密,文件下載等都會涉及到"流",所以筆者認為,把握它是很有用的,也是比較重要的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久精品免费视频| 亚洲男人天堂久| 久久最新资源网| 亚洲自拍高清视频网站| 久久久久久久国产精品| 日韩av免费在线观看| 久久精品久久久久电影| 日韩欧美中文字幕在线播放| xx视频.9999.com| 国产精品美女www| 欧美与欧洲交xxxx免费观看| 国内精品一区二区三区四区| 影音先锋欧美在线资源| 国产成人91久久精品| 一区二区亚洲欧洲国产日韩| 精品亚洲一区二区三区四区五区| 亚洲精品国产精品乱码不99按摩| 55夜色66夜色国产精品视频| 国产成人高清激情视频在线观看| 亚洲va欧美va在线观看| 日韩理论片久久| 亚洲欧美中文字幕| 国产日韩欧美视频在线| 亚洲第一黄色网| 成人在线激情视频| 欧美性做爰毛片| 自拍偷拍亚洲精品| 不卡av日日日| 国产成人精品优优av| 一区二区日韩精品| 国产裸体写真av一区二区| 亚洲精品99999| 久久999免费视频| 亚洲激情中文字幕| 亚洲精品女av网站| 成人久久久久爱| 精品夜色国产国偷在线| 亚洲第五色综合网| 国产精品普通话| 欧美电影免费观看| 欧美午夜精品久久久久久浪潮| 国产欧美一区二区三区在线| 亚洲精品欧美日韩专区| 不卡av在线网站| 国内精品400部情侣激情| 日本精品久久中文字幕佐佐木| 欧美在线观看视频| 欧美日韩国产成人在线观看| 亚洲精品98久久久久久中文字幕| 日本一区二区在线播放| 91av视频在线免费观看| 亚洲精品国产综合区久久久久久久| 美女精品久久久| 日韩中文字幕视频在线| 精品久久久av| 欧美在线视频播放| 亚洲三级黄色在线观看| 欧美网站在线观看| 精品一区二区亚洲| 91精品视频专区| 97超视频免费观看| 中文字幕日韩专区| 日韩欧美在线视频日韩欧美在线视频| 日韩欧美成人精品| 久久全国免费视频| 国产成+人+综合+亚洲欧洲| 欧美激情视频免费观看| 久久精品国产成人| 91免费观看网站| 日本成人激情视频| 亚洲欧美综合精品久久成人| 精品在线观看国产| 精品中文视频在线| 国产精品午夜国产小视频| 一区二区三区视频观看| 最新的欧美黄色| 亚洲国产又黄又爽女人高潮的| 欧美国产精品va在线观看| 国产精品久久久久久中文字| 欧美在线一区二区视频| 国产精品国产三级国产aⅴ浪潮| 国产亚洲精品日韩| 国产精品露脸av在线| 91精品美女在线| 欧美成人黑人xx视频免费观看| 久久影视电视剧凤归四时歌| 亚洲91精品在线观看| 亚洲成色777777在线观看影院| 亚洲欧美日韩高清| 亚洲欧美福利视频| 亚洲free嫩bbb| 成人激情在线播放| 国产精品69精品一区二区三区| 国产精品免费久久久| 欧美成人免费观看| 91九色综合久久| 亚洲黄色片网站| 8x海外华人永久免费日韩内陆视频| 欧美黑人性生活视频| 亚洲精品美女久久久久| 欧美刺激性大交免费视频| 欧美成人合集magnet| 欧美精品久久久久久久免费观看| 亚洲天堂av在线播放| 97在线观看视频| 欧美成年人在线观看| 国产精品福利在线观看网址| 不卡伊人av在线播放| 国产免费观看久久黄| 韩日欧美一区二区| 国产成人在线播放| 国产精品中文字幕在线| 久久理论片午夜琪琪电影网| 久久久精品一区| 国产欧美日韩最新| 欧美精品日韩www.p站| 免费成人高清视频| 日韩大陆欧美高清视频区| 亚洲少妇激情视频| 欧美日韩色婷婷| 欧美国产日韩视频| 国产精品第一视频| 日韩精品在线免费观看| xvideos成人免费中文版| 国产欧美韩国高清| 亚洲欧美制服丝袜| 91中文字幕在线观看| 中文字幕亚洲综合| 成人黄色免费网站在线观看| 精品视频在线播放色网色视频| 欧美丝袜一区二区| 欧美日韩中国免费专区在线看| 亚洲国产精品女人久久久| 热久久这里只有精品| 国产91精品久久久久久久| 国精产品一区一区三区有限在线| 日本国产精品视频| xvideos亚洲| 97久久久免费福利网址| 亚洲天堂第二页| 亚洲精品美女在线观看播放| 美日韩精品免费视频| 欧美成人免费在线观看| 国产精品爽爽爽爽爽爽在线观看| 亚洲欧美资源在线| 久久精品成人动漫| 欧美激情视频网站| 91午夜理伦私人影院| 97久久久免费福利网址| 中文字幕亚洲天堂| 亚洲成人av片在线观看| 136fldh精品导航福利| 国产裸体写真av一区二区| 久久夜精品va视频免费观看| 97久久精品在线| 国产乱人伦真实精品视频| 亚洲毛片在线观看.| 日本一本a高清免费不卡| 成人深夜直播免费观看| 麻豆乱码国产一区二区三区| 色综合视频网站| 久久成人av网站| 最新国产成人av网站网址麻豆| 亚洲天堂av图片|