to bms:
回 wql
你说的用两个Tfilestream就可以简单做到,但仍然要对文件做从新的写入操作.
我没有说要用两个Tfilestream啊!
而是直接文件操作
{$I-}
Var
sFl: File;
tFl: File;
TmI:Integer;
_Buf
acked Array [1..16384] Of Byte;
begin
AssignFile(sFl,'c:/source.1');
AssignFile(tFl,'c:/target.1');
ReSet(sFl,1);
ReWrite(tFl,1);
While Not Eof(sFl) Do
Begin
BlockRead(sFl,_Buf,SizeOf(_Buf),TmI);
BlockWrite(tFl,_Buf,TmI,TmI);
End;
Close(sFl);
Close(tFl);
就完成了一个文件的拷贝过程!若前面要加信息,例如
'This file builded by 我爱PASCAL',可以:
Var
MyMsg : String;
SetLengTh(MyMsg,168);
MyMsg:='This file builded by 我爱PASCAL'#13#10#26;
ReSet(sFl,1);
ReWrite(tFl,1);
BlockWrite(tFl,MyMsg[1],LengTh(MyMsg),TmI);
While Not Eof(sFl) Do
Begin
BlockRead(sFl,_Buf,SizeOf(_Buf),TmI);
... ...
就可以了啊!
嘿嘿!
还可以加其他文件!
不要关闭 tFl,
继续循环sfl的AssignFile
即可把多个文件写入到 tFl中了啊!
其他的加密,压缩,就可以在
BlockRead()操作后对_Buf惊醒即可!啊!啊!啊!啊!
end;