Delphi修改文件内容

来源:百度知道 编辑:UC知道 时间:2024/05/29 00:48:25
现在要做一个批量修改文件的小程序,我已经列出指定目录下符合条件的所有文件,并且用pos和copy执行了替换,但是还有一些问题。

1、用遍历目录的方式做的搜索功能不够强大,特别是难以实现搜索包含指定文字的功能,有没有哪个API能调用Windows搜索功能的,或能实现类似功能的?

2、有没有效率比较高的替换函数,因为当文件比较大时,用pos和copy就显示慢了。

3、对于只读的文件不执行替换,并且替换完毕后需要将文件设为只读属性,有哪个函数能判断文件是否只读并能设置文件属性的?

哪位大侠能帮帮忙,感激不尽!
能不能有针对性的回答,前两个效率差点没关系,主要是第三个问题。

第一个问题:
见第二问题解答。
第二个问题:
建议使用内存流或者文件流对象来完成操作:使用例:比如要在C:\tst.dat文件中查找字符为'A'
const
FileName: String = 'C:\tst.dat';
FindText: Char = 'A';
var
Buf: Byte;
Mem: TMemoryStream;
begin
Mem := TMemoryStream.Create;

Mem.LoadFromFile(FileName);
Mem.Seek(0,soBeginning);

while Mem.Position <> Mem.Size do
begin
Mem.Read(Buf,1);

if Chr(Buf) = FindText then
begin
ShowMessage('I Get It At 0x' + IntToHex(Mem.Position,4) + 'H');
Mem.Free;
Exit;
end;
end;

ShowMessage('I cant get it');

Mem.Free;
如果要替换'A'为别的数据使用Mem.Write放在在当前文件指针位置写入ASC码的十六进制?纯伞?

第三个问题:
获取文件属性使用:FileAttributes详情参见MS Win32 SDK
修改文件属性使用:SetAttributes 使用例:解开自身只读属性
var
C: PChar;
begin
New(C);
GetMem(C