在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自帶的幫助*} 三、結束語