2009-10-16 76 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

你可能需要從中刪除角色後點讀取和寫入整個文件,或者至少所有字節

有時更好地想出了一個辦法來避免刪除字符 - 即文件中的空白空間