C # Anexar matriz de bytes al archivo existente

Me gustaría agregar una matriz de bytes a un archivo ya existente (C:\test.exe) . Supongamos la siguiente matriz de bytes:

 byte[] appendMe = new byte[ 1000 ] ; File.AppendAllBytes(@"C:\test.exe", appendMe); // Something like this - Yes, I know this method does not really exist. 

Haría esto usando File.WriteAllBytes, pero voy a usar una matriz de bytes ENORME, y la excepción System.MemoryOverload se lanza constantemente. Por lo tanto, lo más probable es que tenga que dividir la gran matriz en pedazos y anexar cada matriz de bytes al final del archivo.

Gracias,

Evan

Una forma sería crear un FileStream con el modo de creación FileMode.Append .

Abre el archivo si existe y busca al final del archivo, o crea un nuevo archivo.

Esto se vería algo así como:

 public static void AppendAllBytes(string path, byte[] bytes) { //argument-checking here. using (var stream = new FileStream(path, FileMode.Append)) { stream.Write(bytes, 0, bytes.Length); } } 
  1. Crea un nuevo FileStream .
  2. Seek() hasta el final.
  3. Write() los bytes.
  4. Close() la secuencia.

También puede usar el FileSystem.WriteAllBytes Method (String, Byte[], Boolean) incorporado FileSystem.WriteAllBytes Method (String, Byte[], Boolean) .

 public static void WriteAllBytes( string file, byte[] data, bool append ) 

Configure append en True para agregar al contenido del archivo; Falso para sobrescribir el contenido del archivo. El valor predeterminado es falso.

No estoy exactamente seguro de cuál es la pregunta, pero C # tiene un método BinaryWriter que toma una matriz de bytes.

BinaryWriter (Byte [])

 bool writeFinished = false; string fileName = "C:\\test.exe"; FileStream fs = new FileString(fileName); BinaryWriter bw = new BinaryWriter(fs); int pos = fs.Length; while(!writeFinished) { byte[] data = GetData(); bw.Write(data, pos, data.Length); pos += data.Length; } 

Donde writeFinished es verdadero cuando se han anexado todos los datos, y GetData() devuelve una matriz de datos para adjuntar.

simplemente puede crear una función para hacer esto

 public static void AppendToFile(string fileToWrite, byte[] DT) { using (FileStream FS = new FileStream(fileToWrite, File.Exists(fileToWrite) ? FileMode.Append : FileMode.OpenOrCreate, FileAccess.Write)) { FS.Write(DT, 0, DT.Length); FS.Close(); } } 
    Intereting Posts