2009-10-16 55 views
3

我想从二进制/文本文件中删除字符/字符串。如果我知道文件中char/string的位置,我该如何删除它?我应该读取文件(BlockRead),删除字符/字符串(删除(源,startPos,endPos),然后写入(BlockWrite)到一个新的文件或我可以直接从指定的文件中删除?从二进制文件中删除字符

谢谢

+0

它可能会更容易地使用TFileStream的比BlockRead /块写入 – 2009-10-16 04:48:14

回答

12

您可以使用TFileStream.CopyFrom方法复制到不需要的stri ng,找出它,然后再从文件的其余部分复制。 TFileStreams非常快。

像这样(未经)

aInFile := TFileStream.Create(sInput, fmOpenRead); 
try 
    aOutFile := TFileStream.Create(sOutput, fmCreate); 
    try 
    aOutFile.CopyFrom(aInFile, Pos); 
    aInFile.Seek(Skip); 
    aOutFile.CopyFrom(aInFile, aInfile.Size - Pos - Skip); 
    finally 
    aOutFile.Free; 
    end; 
finally 
    aInFile.Free; 
end; 
1

你可能需要从中删除角色后点读取和写入整个文件,或者至少所有字节

有时更好地想出了一个办法来避免删除字符 - 即文件中的空白空间