to huddle:
对DBF数据当然可以这样做,如果是其他任意类型的文件呢? 所以还是应想一个通用的方法。
我多次试验,现在找到了一个方法:
procedure TForm1.Button1Click(Sender: TObject);
var
s,t:TfileStream;
buf:array[0..4096] of byte;
rn,wn:integer;
cgtime:tdatetime;
begin
s := TFileStream.Create(Edit1.Text, fmOpenRead or fmShareDenyWrite);
try
t := TFileStream.Create(edit2.text,fmOpenReadWrite or fmShareDenynone);// or fmShareDenyRead);
try
while (s.Position<>s.Size) do
begin
rn:= s.Read(buf,sizeof(buf));
while t.Write(buf,rn)<rn do
begin
t.Write(buf,rn);
end;
end;
finally
FreeAndNil(t);
end;
finally
FreeAndNil(s);
end;
end;
不过次法有一缺点,当源文件比目标文件小时,拷贝后的源文件并未变小。
欢迎各位踊跃发言,看还有没有更好的方法?