我使用下面的代碼中插入文本文件中的任意部分:如何修剪二進制文件的結尾?
Dim prebuffer() As Byte
Dim postbuffer() As Byte
Dim number As Integer
number = FreeFile
Open file For Binary Access Read Write Lock Read Write As number
ReDim prebuffer(after - 2)
ReDim postbuffer(LOF(number) - before)
Get number, 1, prebuffer
Get number, before, postbuffer
Seek number, 1
Put number, , prebuffer
Put number, , value
Put number, , postbuffer
Close number
after
和before
是從先前調用中檢索到Seek(number)
多頭。當after
等於before
時,我只想插入數據而不擦除任何數據。但是,當after
小於before
,我用我自己的一些覆蓋現有的數據。
當(before - after) <= Len(value)
,因爲Windows知道增加我的文件大小以適應新的字節,這很有用。但是,當插入的字節數少於我要移除的字節數時,文件不會縮小,而是將現有字節留在那裏。
例如,如果我的二進制文件是abcdefghijklmnopqrstuvwxyz
,我想插入HELLO
與after=5
和before=15
我得到abcdeHELLOopqrstuvwxyzvwxyz
,與正在重複vwxyz
。如何縮小文件以便我只獲得abcdeHELLOopqrstuvwxyz
?
澄清:我知道我可以刪除原始文件,並寫入整個緩衝區回來了,但我的目標爲高性能,並寫下了插入這種方式,因爲讀取和寫入整個文件逐條線路太慢了。另外,我想保留文件的屬性,並且不希望每次通過創建全新文件來插入記錄時都要銷燬它們。
所有它給*我*是503錯誤... – dlras2 2011-06-13 19:20:36
嗯,現在工作。與此同時,我在Google上發現了這個API--謝謝,它運作良好,但不幸的是我需要求助於API調用。 – dlras2 2011-06-13 20:06:29