416 Stimmen

Kann ein Byte[] Array in eine Datei in C# geschrieben werden?

Ich versuche, einen Brief zu schreiben. Byte[] Array, das eine vollständige Datei darstellt, in eine Datei.

Die Originaldatei vom Client wird über TCP gesendet und dann von einem Server empfangen. Der empfangene Stream wird in ein Byte-Array eingelesen und dann zur Verarbeitung durch diese Klasse gesendet.

Damit soll vor allem sichergestellt werden, dass der Empfänger TCPClient für den nächsten Stream bereit ist und die Empfangsseite von der Verarbeitungsseite trennt.

Die FileStream Klasse nimmt kein Byte-Array als Argument und auch kein anderes Stream-Objekt (mit dem Sie Bytes in den Stream schreiben können).

Ich möchte, dass die Verarbeitung von einem anderen Thread als dem ursprünglichen (dem mit dem TCPClient) durchgeführt wird.

Ich weiß nicht, wie ich das umsetzen kann, was sollte ich versuchen?

843voto

Kev Punkte 115293

Ausgehend vom ersten Satz der Frage: "Ich versuche, ein Byte[]-Array auszuschreiben die eine vollständige Datei darstellt zu einer Datei."

Das wäre der Weg des geringsten Widerstands:

File.WriteAllBytes(string path, byte[] bytes)

Dokumentiert hier:

System.IO.File.WriteAllBytes - MSDN

46voto

Treb Punkte 19459

Sie können eine BinaryWriter Objekt.

protected bool SaveData(string FileName, byte[] Data)
{
    BinaryWriter Writer = null;
    string Name = @"C:\temp\yourfile.name";

    try
    {
        // Create a new stream to write to the file
        Writer = new BinaryWriter(File.OpenWrite(Name));

        // Writer raw data                
        Writer.Write(Data);
        Writer.Flush();
        Writer.Close();
    }
    catch 
    {
        //...
        return false;
    }

    return true;
}

Bearbeiten: Ups, ich habe das finally Teil... sagen wir, es bleibt eine Übung für den Leser ;-)

24voto

Andrew Rollings Punkte 13882

Es gibt eine statische Methode System.IO.File.WriteAllBytes

13voto

JoshBerke Punkte 64214

Sie können dies tun mit System.IO.BinaryWriter was einen Stream so dauert:

var bw = new BinaryWriter(File.Open("path",FileMode.OpenOrCreate);
bw.Write(byteArray);

9voto

Mitchel Sellers Punkte 60318

Sie können die FileStream.Write(byte[] array, int offset, int count) Methode, um sie auszuschreiben.

Wenn der Name Ihres Arrays "myArray" lautet, würde der Code wie folgt lauten.

myStream.Write(myArray, 0, myArray.count);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X