K
kangshijiu
Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序代码如下,怎么压缩出来的流是空的啊.
{
功能:压缩,将文件读入内存流中,再用压缩流压缩到另一内存流中,再将另一内存流写入目标文件
参数:FSrcFileName源文件, FDetFileName目标文件,FCompLevel压缩模式,返回压缩字节数
}
function TForm1.CompressFile(FSrcFileName, FDetFileName: String;
FCompLevel: TCompressionLevel):Integer;
var
CompStream: TCompressionStream;
InMemStream,OutMemStream: TMemoryStream;
count: Integer;
begin
Result := 0;
if (FSrcFileName='') or (FDetFileName='') then
begin
ShowMessage('源文件名或目标文件名不能为空!');
Exit;
end;
if not FileExists(FSrcFileName) or FileExists(FDetFileName) then
begin
ShowMessage('源文件不存在或目标文件已存在!');
Exit;
end;
InMemStream := TMemoryStream.Create;
OutMemStream := TMemoryStream.Create;
try
InMemStream.LoadFromFile(FSrcFileName);
count := InMemStream.Size;
CompStream := TCompressionStream.Create(FCompLevel,InMemStream);
try
//可以添加加密算法
CompStream.Write(OutMemStream,count); //??????怎么写出来是空流?
OutMemStream.SaveToFile(FDetFileName);
finally
FreeAndNil(CompStream);
end;
Result := count;
ShowMessage('文件' + FSrcFileName + '压缩成功,共压缩了' + IntToStr(Count) + ' 字节!');
finally
FreeAndNil(InMemStream);
FreeAndNil(OutMemStream);
end;
end;
{
功能:压缩,将文件读入内存流中,再用压缩流压缩到另一内存流中,再将另一内存流写入目标文件
参数:FSrcFileName源文件, FDetFileName目标文件,FCompLevel压缩模式,返回压缩字节数
}
function TForm1.CompressFile(FSrcFileName, FDetFileName: String;
FCompLevel: TCompressionLevel):Integer;
var
CompStream: TCompressionStream;
InMemStream,OutMemStream: TMemoryStream;
count: Integer;
begin
Result := 0;
if (FSrcFileName='') or (FDetFileName='') then
begin
ShowMessage('源文件名或目标文件名不能为空!');
Exit;
end;
if not FileExists(FSrcFileName) or FileExists(FDetFileName) then
begin
ShowMessage('源文件不存在或目标文件已存在!');
Exit;
end;
InMemStream := TMemoryStream.Create;
OutMemStream := TMemoryStream.Create;
try
InMemStream.LoadFromFile(FSrcFileName);
count := InMemStream.Size;
CompStream := TCompressionStream.Create(FCompLevel,InMemStream);
try
//可以添加加密算法
CompStream.Write(OutMemStream,count); //??????怎么写出来是空流?
OutMemStream.SaveToFile(FDetFileName);
finally
FreeAndNil(CompStream);
end;
Result := count;
ShowMessage('文件' + FSrcFileName + '压缩成功,共压缩了' + IntToStr(Count) + ' 字节!');
finally
FreeAndNil(InMemStream);
FreeAndNil(OutMemStream);
end;
end;