Anhängen von Daten an Byte-Array
Derzeit, ich lese Daten aus einer binären Datei (Datei.ReadAllBytes), Konvertierung in das byte-array in einen string und anfügen von Daten auf diesen string. Schließlich bin ich der Konvertierung der Zeichenfolge wieder in ein byte-array und schreiben der Daten zurück in eine neue Datei.
Yeah - diese Methode ist ziemlich idiotisch, und ich bin schon neugierig, ob es eine Möglichkeit gibt, zum Anhängen dieses neue Daten auf das Ende des byte-Arrays (in form eines byte).
String s = @"C:\File.exe";
Byte b[] = File.ReadAllBytes(s);
String NewString = ConvertToString(b[]);
NewString = NewString + "Some Data";
b[] = ConvertToByteArray(NewString);
File.WriteAllBytes(b[]);
//ConvertToByteArray und ConvertToString stellen Funktionen und wandelt die Zeichenfolge > Byte > string.
Was ich tun möchte:
b[] = file.readallbytes(s)
b = b + "new Data"
file.writeallbytes(b[])
Vielen Dank für jede Einsicht in die Angelegenheit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie den Umgang mit Streams - in diesem Fall könnten Sie ein
MemoryStream
zu erreichen, die genau die gleiche Sache, ohne alle diese lästigen arrays.Admitedly das sieht eine ganze Menge mehr kompliziert, als Sie Ihren code, aber unter der Haube, was es tut, ist effizienter.
Natürlich, wenn Sie nur das schreiben in eine andere Datei (oder sogar der selben Datei) können Sie schreiben einfach direkt auf die Datei und überspringen Sie die Notwendigkeit für eine
byte
array oderMemoryStream
ganz - das ist die Schönheit der Bäche.Verwenden
List<Byte>
, fügen Sie jedes byte von der erstenReadAllBytes
mitAddRange
, und fügen Sie dann in der nächsten Gruppe von bytes. Schließlich verwendenCopyTo
kopieren alle bytes in ein array (der GrößeList.Length
).Verwenden
FileStream
seek zum Ende der Datei und schreiben Sie dann, was Sie brauchen:Wenn Sie wirklich brauchen, um Lesen Sie die gesamte Datei, dann verwenden Sie einfach
Array.Resize
um Ihren Puffer größer, und kopieren Sie den Teil, den Sie Anhängen möchten.Gibt es keine "Kürzel" für diese, sorry. :\
Wenn der gesamte Punkt dieses ist zum Anhängen eines string, verwenden Sie einfach
- Datei.AppendAllText
!Array.Resize
.Wenn Sie wollen einfach nur etwas Anhängen, um die Datei, dann sollten Sie mit einem FileStream und StreamWriter:
oder etwas ähnliches.
Wenn Sie wollen einfach nur append einige bytes:
Erstellen Sie ein neues array mit der Größe der Summe der zwei getrennten arrays, dann eine Kopie deines arrays zu.