下面是我测试文件流分次拷贝数据,但是拷过去的数据打开时说文件损坏,请教大家,请不要跟我建议用Copyfrom,就是要分段复制!
var scr,new:TFilestream;
p:pointer;
size:integer;
begin
scr:=TFilestream.Create('d:\delphi.rar',fmopenread);
size:=scr.Size;
new:=Tfilestream.Create('e:\delphi.rar',fmcreate or fmopenwrite);
try
while size>0 do
begin
if size>2000 then
begin
scr.Read(p^,2000);
new.Write(p^,2000);
size:=size-2000;
end
else
begin
scr.Read(p^,size);
new.Write(p^,size);
size:=0;
end; end; finally
scr.Free;
new.Free;
end;end;
var scr,new:TFilestream;
p:pointer;
size:integer;
begin
scr:=TFilestream.Create('d:\delphi.rar',fmopenread);
size:=scr.Size;
new:=Tfilestream.Create('e:\delphi.rar',fmcreate or fmopenwrite);
try
while size>0 do
begin
if size>2000 then
begin
scr.Read(p^,2000);
new.Write(p^,2000);
size:=size-2000;
end
else
begin
scr.Read(p^,size);
new.Write(p^,size);
size:=0;
end; end; finally
scr.Free;
new.Free;
end;end;
scr,new:TFilestream;
p: array [0..2000] of byte;
size:integer;
begin
scr:=TFilestream.Create('d:\delphi.rar',fmopenread);
size:=scr.Size;
scr.Position := 0;
new:=Tfilestream.Create('e:\delphi.rar',fmcreate or fmopenwrite);
new.Position := 0; try
while size>0 do
begin
if size>2000 then
begin
scr.Read(p,2000);
new.Write(p,2000);
size:=size-2000;
end
else
begin
scr.Read(p,size);
new.Write(p,size);
size:=0;
end; end; finally
scr.Free;
new.Free;
end;end;