怎样在DELPHI中实现文件切割/组合

2016-01-29 14:27 8 1 收藏

怎样在DELPHI中实现文件切割/组合,怎样在DELPHI中实现文件切割/组合

【 tulaoshi.com - Delphi 】

  所谓文件切割,就是把一个文件切割成若干个小文件。做法就是将一个文件对象以"文件流"的方式读出,然后按照一定的块(Block)大小分别存成文件。文件组合,就是把若干个文件组合成一个文件。比如像打包工具(Wise)用到的就是这个原理。如果大家对"流"这个概念熟悉的话,那么实现起来就很容易了,以下就是实现步骤。

  二、 实现

  在DELPHI中新建一个工程,然后在窗体中加入两个BUTTON,一个EDIT,一个OPENDIALOG,一个SAVEDIALOG,再将BUTTON1的CAPTION改为"切割",BUTTON2的CAPTION改为"组合"(注:其它控件的属性略)。再双击BUTTON1和BUTTON2,写下如下代码:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/delphi/)

//切割文件
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;

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/delphi/)

 //组合文件
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);

来源:http://www.tulaoshi.com/n/20160129/1493333.html

延伸阅读
标签: 办公软件
我们经常用Word建立各种各样的文档,日子久了,看到文档标题就想不起文档的内容了(如图1),为了寻找某篇文章,你是不是需要一个个打开文件并深感烦恼?其实大可不必如此,我们可以利用Word的预览功能了解文件的内容。 运行Word,单击“打开”按钮,在弹出的打开对话框中选择Word文件所在的文件夹,并选中某个文件,单击第一行工具栏的“视...
在Delphi中获取和修改文件的时间 本文介绍了在Delphi中利用系统函数和Windows API函数调用来获取和修改文件的时间信息的方法。 熟悉Windows 95/98的朋友一定经常会用单击鼠标右键的方法来查看所选定的文件的属性信息。在属性菜单中会列出该文件的创建时间、修改时间和访问时间。这些信息常常是很有用的,它们的设置一般都是...
用DELPHI实现文件加密压缩 作者: e梦缘 (wnhoo) Mail:wnhoo@163.com 风花雪月 e梦情缘 点击下载此详细说明文件 概述: 在这篇文件中,讲述对单个文件的数据加密、数据压缩、自解压的实现。同样,也可以实现对多个文件或文件夹的压缩,只要稍加修改便可实现。 关键...
标签: Delphi
  Delphi中向TDBGrid添加组件是一件十分麻烦的事情。笔者在这里向大家介绍一种利用WIN32 API函数在TDBGRID中嵌入CHECKBOX组件的方法。 TDBGrid部件是用于显示和编辑数据库表中记录信息的重要部件,它是我们在程序设计过程中要经常使用的一个强有力的工具。TDBGrid具有很多重要的属性,我们可以在程序设计阶段和程序运行过程...
标签: Delphi
  Delphi作为一种面向对象的可视化开发工具,以其开发程序的高速度和编译代码的高效率越来越受到广大编程人员的喜爱。尽管Delphi已经提供了非常强大的开发组件(VCL),但灵活使用API函数一定可以使你的程序增色不少。 状态键的检查 当今不少流行软件的编辑窗口(包括Delphi的代码编辑窗口)的底部都有一个状态条...

经验教程

40

收藏

34
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部