procedure CompressFiles(Files: TStrings; const Filename: string; ATmpDir: string);
var
infile, outfile, tmpFile: TFileStream;
compr: TCompressionStream;
i,l: Integer;
s, sTmpGuid: string;
// l : Int64;
begin
if Files.Count > 0 then
begin
outFile := TFileStream.Create(Filename, fmCreate);
try
{ 待合并文件的数量 }
l := Files.Count;
outfile.Write(l, SizeOf(l));
for i := 0 to Files.Count - 1 do
begin
infile := TFileStream.Create(Files[i], fmOpenRead);
try
{ 获取原始文件名 }
s := ExtractFilename(Files[i]);
{ 获取原始文件名长度 }
l := Length(s);
{ 写入文件名长度 }
outfile.Write(l, SizeOf(l));
{ 写入文件名内容 }
outfile.Write(s[1], l);
{ 获取文件大小(字节数) }
l := infile.Size;
{ 写入文件大小(字节数) }
outfile.Write(l, SizeOf(l));
{ 压缩并存储文件内容 }
outfile.CopyFrom(infile, 0);
finally
infile.Free;
end;
end;
finally
outfile.Free;
end;
// DeleteFile(sTmpGuid);
end;
end;
var
infile, outfile, tmpFile: TFileStream;
compr: TCompressionStream;
i,l: Integer;
s, sTmpGuid: string;
// l : Int64;
begin
if Files.Count > 0 then
begin
outFile := TFileStream.Create(Filename, fmCreate);
try
{ 待合并文件的数量 }
l := Files.Count;
outfile.Write(l, SizeOf(l));
for i := 0 to Files.Count - 1 do
begin
infile := TFileStream.Create(Files[i], fmOpenRead);
try
{ 获取原始文件名 }
s := ExtractFilename(Files[i]);
{ 获取原始文件名长度 }
l := Length(s);
{ 写入文件名长度 }
outfile.Write(l, SizeOf(l));
{ 写入文件名内容 }
outfile.Write(s[1], l);
{ 获取文件大小(字节数) }
l := infile.Size;
{ 写入文件大小(字节数) }
outfile.Write(l, SizeOf(l));
{ 压缩并存储文件内容 }
outfile.CopyFrom(infile, 0);
finally
infile.Free;
end;
end;
finally
outfile.Free;
end;
// DeleteFile(sTmpGuid);
end;
end;