Schreiben von bytes aus einem struct in eine Datei mit c#

Guten morgen allerseits!

Bin ich mit einem neuen problem hier. Ich Schreibe Daten aus einem struct, der ich erklärte in meinem sistem.

Die Struktur habe ich geschaffen, hat nur zwei Felder, und ich verwenden, um zu später conevrt in bytes.

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct MyStructData
{
    public short Id;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
    public string Name;
}

Ich konvertieren Sie diese Struktur in bytes mit dem folgenden code:

private byte[] getBytes(MyStructData aux)
{
    int length = Marshal.SizeOf(aux);
    IntPtr ptr = Marshal.AllocHGlobal(length);
    byte[] myBuffer = new byte[length];

    Marshal.StructureToPtr(aux, ptr, true);
    Marshal.Copy(ptr, myBuffer, 0, length);
    Marshal.FreeHGlobal(ptr);

    return myBuffer;
}

Diese Funktion zu transformieren jedes Elementes in einer Liste Struktur MyStructData Typ-Elemente, wo ich alle die Register, die ich senden möchten, auf einer anderen Maschine, und ich mache es mit den code eingefügt unter:

string saveToFilePath = "D:\\" + filename;
Stream myStream = myFtpRequest.GetRequestStream();

using (FileStream myFileStream = new FileStream(saveToFilePath, FileMode.Create))
{
    foreach (MyStructData myData in myStructDataList)
    {
        int length = 2048;
        byte[] newBuffer = new byte[length];
        newBuffer = getBytes(myCust);

        int len = 0;
        int bytesRead = 0;

        myFileStream.Write(newBuffer, 0, len);
        bytesRead += len;
    }

    myFileStream.Close();
}

Mein problem kommt, dass ich sehe, dass meine neue Datei ist leer und ich kann nicht sehen, warum es nicht bekommt die Informationen von meinem bytes. Ich habe bereits überprüft, ob die Liste kommt mit den Daten oder nicht und ich habe auch überprüft, dass mein byte-Konvertierung-Funktion funktioniert auch einwandfrei, aber ich kann nicht auf den Punkt kommen, um zu sehen, was verursacht, dass meine Datei ist leer.

Wenn jemand weiß, das Licht am Ende des Tunnels, ich würde schätzen es sehr, dass Ihre Hilfe!

BEARBEITEN Jetzt habe ich eine andere Methode zum schreiben der Daten in die Datei und es funktioniert gut:

using (Stream stream = new FileStream(saveToFilePath, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
{
    using (BinaryWriter writer = new BinaryWriter(stream, Encoding.Default))
    {
        //get all data
        foreach (MyStructData myData in myStructDataList)
        {
            byte[] newBuffer = getBytes(cd);
            writer.Write(newBuffer);
        }
    }
}

InformationsquelleAutor Marialvy Martínez | 2013-06-27

Schreibe einen Kommentar