2009-07-09 26 views
0

我需要更改一個後效應項目文件中的一些文本值,我認爲它是一個二進制文件。你不能用文本編輯器編輯這個文件,如果你下次打開它,你會遇到關於損壞的項目文件的錯誤信息。修改c#或C++中的二進制文件(後效應項目文件)

,所以我需要例如變「TextArea1」到「一些新的文本」所以你看新文本的長度是不一樣的原始之一。我應該使用BinaryReader還是什麼?我怎麼能找到在byte []數組原始字符串我從這個命令得到...

正如我在這個領域是個新手,請告訴我,我應該在這件事情做。

+0

謝謝你的答案斯科特。是的,我有VS,但我需要以編程方式做到這一點。 – EBAG 2009-07-09 21:35:12

+0

它是什麼類型的文件,你能說更多關於編輯的種類嗎?也許有一種已知的方式來做到這一點,作爲構建的一部分。 – 2009-07-09 21:38:25

回答

0

你有視覺工作室嗎?如果是,請執行:

  1. 文件 - >打開並選擇文件。
  2. 在打開的按鈕上,按下拉箭頭。
  3. 選擇 「打開方式」
  4. 選擇:二進制編輯器。

至少你可以看到什麼是在文件中。這至少是一個很好的起點。它會顯示字節值,以及右側字節的任何字符值。

至於如何編輯文本,這一切都取決於什麼樣的數據格式。我知道你說它是二進制的,但這不是一種格式,說什麼是二進制只是意味着你實際上不知道格式是什麼。它可能是一個字符串(文本)值之前,前一個字節給出了文本的長度,所以你可以插入一些更多的文本,然後增加這個值。這可能是因爲長度存儲在兩個或多個字節中(因爲一個字節只能保存多達256個值,如果他們希望文本長度超過256個字符,它們可能會使用兩個字節作爲格式)。該格式可能在一段文本具有值爲0的字節後標記文本的結尾。另外,文本通常可以用1個字節中的一個字符或2個字節中的1個字符存儲,或者對於某些字符(普通話等),每個字符的字節數可能會有所不同。

祝你好運!最好的建議是嘗試追蹤知道文件格式是什麼的人。告訴我們更多關於該文件的信息,它是什麼類型的?它有擴展嗎?

0

我不知道該文件的結構,但你可能無法改變文本字符串的長度。作爲一個測試,如果你只是將字節替換爲字節,那麼它可能不會被破壞。

0

編輯最簡單的方法就是做:

byte[] data = File.ReadAllBytes("C:\theFileName"); 
// modify data here 
File.WriteAllBytes("C:\theFileName", data); 
0

假設文件結構並沒有在它表明域x任何指針應該在這個字節從文件,字段的開始偏移y應該從這個其他字節偏移等開始,你將需要這樣的東西:

  1. 以字節讀取文件。
  2. 找到需要更改的位置。
  3. 寫出更改前的字節。
  4. 寫出新文本的字節。
  5. 從舊文本之後寫出文件的字節。

如果文本是單字節,雙字節或多字節,如果所有字節都在字節區域中(例如),但您需要以雙字節或多字節格式搜索文本。