una modificar modificacion manejo lectura guardar estructura escritura ejemplos binarios binario archivos archivo c# .net

c# - modificar - modificacion de archivos binarios en c



¿Cómo agregar datos a un archivo binario? (3)

Tengo un archivo binario al que quiero anexar una parte de los datos al final del archivo, ¿cómo puedo lograrlo utilizando C # y .net? ¿También hay alguna consideración que tomar al escribir al final de un archivo binario? muchas gracias por tu ayuda.


Deberías poder hacer esto a través de Stream :

using (FileStream data = new FileStream(path, FileMode.Append)) { data.Write(...); }

En cuanto a las consideraciones, la principal sería: ¿el formato de datos subyacente es compatible? Muchos no lo hacen, a menos que sean sus propios datos en bruto, texto, etc. Un documento xml bien formado no admite la adición (sin considerar el elemento final), por ejemplo. Tampoco algo parecido a un documento de Word. Algunos lo hacen, sin embargo. Asi que; ¿Sus datos están bien con esto?


Usando StreamWriter y StreamWriter referencia a DotNetPerls , asegúrese de agregar el True StreamWriter booleano al constructor StreamWriter , si de lo contrario se deja en blanco, se sobrescribirá como de costumbre:

using System.IO; class Program { static void Main() { // 1: Write single line to new file using (StreamWriter writer = new StreamWriter("C://log.txt", true)) { writer.WriteLine("Important data line 1"); } // 2: Append line to the file using (StreamWriter writer = new StreamWriter("C://log.txt", true)) { writer.WriteLine("Line 2"); } } } Output (File "log.txt" contains these lines.) Important data line 1 Line 2

Esta es la solución que estaba buscando cuando llegué de Google, aunque no era un archivo binario, espero que ayude a alguien más.


private static void AppendData(string filename, int intData, string stringData, byte[] lotsOfData) { using (var fileStream = new FileStream(filename, FileMode.Append, FileAccess.Write, FileShare.None)) using (var bw = new BinaryWriter(fileStream)) { bw.Write(intData); bw.Write(stringData); bw.Write(lotsOfData); } }