C # - Wie kann ich lesen und schreiben Sie eine Binärdatei?
-
11-09-2019 - |
Frage
Wie las ich einen rohen Byte-Array aus einem beliebigen Datei, und schreiben Sie zurück, dass die Byte-Array in eine neue Datei?
Lösung
(edit: beachten Sie, dass die Frage geändert, es nicht byte[]
erwähnen zunächst, siehe Revision 1 )
Nun, springt File.Copy
in den Sinn; aber ansonsten das klingt wie ein Stream
Szenario:
using (Stream source = File.OpenRead(inPath))
using (Stream dest = File.Create(outPath)) {
byte[] buffer = new byte[2048]; // pick size
int bytesRead;
while((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0) {
dest.Write(buffer, 0, bytesRead);
}
}
Andere Tipps
byte[] data = File.ReadAllBytes(path1);
File.WriteAllBytes(path2, data);
Sie wissen über Textreader und < a href = "http://msdn.microsoft.com/en-us/library/system.io.textwriter.aspx" rel = "nofollow noreferrer"> Textwriter , und ihre Nachkommen Stream und Stream ? Ich denke, diese Ihr Problem lösen, weil sie Kodierungen umgehen, Binary nicht über Codierungen nicht kennt oder sogar Text, es mit Bytes nur geht.
Wie Text in eine Datei schreiben
Dies ist ein ausgezeichnetes Intro IO und Kodierungen Datei.
eine aktuelle Antwort Hinzufügen
using (var source = File.OpenRead(inPath))
{
using (var dest = File.Create(outPath))
{
source.CopyTo(dest);
}
}
Sie können optional die Puffergröße angeben
using (var source = File.OpenRead(inPath))
{
using (var dest = File.Create(outPath))
{
source.CopyTo(dest, 2048); // or something bigger.
}
}
oder Sie können den Vorgang auf einem anderen Thread,
ausführenusing (var source = File.OpenRead(inPath))
{
using (var dest = File.Create(outPath))
{
await source.CopyToAsync(dest);
}
}
, das nützlich sein würde, wenn der Haupt-Thread andere Arbeit zu tun hat, wie mit WPF und Windows Store-Anwendungen.