2016-04-18 9 views
0

Ich suche nach Entfernen eines großen Abschnitts von Bytes aus einer Datei und dann Einfügen eines neuen großen Abschnitts von Bytes beginnend an der gleichen Stelle, die die ursprünglichen entfernten Bytes taten, alle mit C#. Weiß jemand, wie man das macht? Ich kann keine Hilfe online finden.Hex Bearbeiten einer Datei in C#?

Jede Hilfe wäre sehr willkommen!

Danke.

+0

Welchen Teil des Prozesses verstehst du nicht? Lesen der Datei, Bearbeiten der gelesenen Datei oder Speichern der bearbeiteten Datei? Das Speichern und Laden Teil sollten Sie in der Lage sein, viele Tutorials für –

+0

@ScottChamberlain zu finden Ich bin mir nicht sicher, wie man den Hex-Editing-Teil (Entfernen der vorhandenen Bytes, dann Hinzufügen der neuen). Ich habe noch nie so etwas in C# gemacht. – MattFiler

+0

Wenn Sie "Einfügen" sagen, meinen Sie damit, die Bytes in der Zieldatei zu erhalten, die hinter dem Offset liegen? Wie groß sind die Daten? Wenn es über das hinausgeht, was vernünftigerweise im Speicher gehalten werden kann, wird zusätzlicher Code benötigt, um einen Puffer während der Übertragung der Bytes zu halten. –

Antwort

1

Dies sollte Ihnen den Anfang machen.

Schritte sind wie folgt:

  1. eine Position finden Sie bearbeiten möchten.
  2. Bereiten Sie Ihre neuen Daten
  3. schreiben

.

using System; 
using System.Text; 
using System.IO; 

namespace Test 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      using (BinaryWriter writer = new BinaryWriter(File.Open("TextFile1.txt", FileMode.Open, FileAccess.ReadWrite))) 
      { 
       int offset = 1; //position you want to start editing 
       byte[] new_data = new byte[] { 0x68, 0x69 }; //new data 
       writer.Seek(offset, SeekOrigin.Begin); //move your cursor to the position 
       writer.Write(new_data);//write it  
      } 
     } 
    } 
} 
+0

Danke für die Antwort, wäre es möglich, einen anderen BinaryWriter zu verwenden, um die Variable new_data mit Inhalt aus einer anderen Datei zu füllen? – MattFiler

+0

können Sie Ihren Puffer mit BinaryReader füllen und den gleichen Ablauf folgen. (tun Sie es bei Bedarf Chunk) https://msdn.microsoft.com/en-us/library/system.io.binaryreader(v=vs.110).aspx – TLJ