一个文件(又N个文件组成的)分解成多个文件

procedure DecompressFiles(const Filename, DestDirectory: string; AFileList: TStringList);
var
  dest, s: string;
  decompr: TDecompressionStream;
  infile, outfile: TFilestream;
  i,c,l : integer;
//  l: int64;
begin
  dest := IncludeTrailingPathDelimiter(DestDirectory);
  infile := TFileStream.Create(Filename, fmOpenRead);
  try
   { 获取子文件数 }
    infile.Read(c, SizeOf(c));
    for i := 1 to c do
    begin
      { 获取文件名长度和文件名 }
      infile.Read(l, SizeOf(l));
      SetLength(s, l);
      infile.Read(s[1], l);
      { 获取文件大小 }
      infile.Read(l, SizeOf(l));
      {解压子文件并且存储 }
      s := dest + s;
      if AFileList <> nil then
      begin
        AFileList.Add(s);
      end;


      outfile := TFileStream.Create(s, fmCreate);
//      decompr := TDecompressionStream.Create(infile);
      try
//        outfile.CopyFrom(decompr, l);
        outfile.CopyFrom(infile,l);
      finally
        outfile.Free;
//        decompr.Free;
      end;
    end;
  finally
    infile.Free;
  end;
end;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值