Datei Schreiben mit Visual Studio 2015

OP #5076346
Lesenswert?

Guten abend,

ich habe ein problem mit dem schreiben einer Datei mit Visual Basic in 
Visual Studio 2015.

Und zwar das Folgende:

Ich habe einen String: "Temp"

msgbox str((len(Temp)))

gibt mit die Info "307000"... ist auch richtig soweit, das sind Daten 
die ich vorher per UART empfangen habe.

Wenn ich jetzt aber:

My.Computer.FileSystem.WriteAllText("C:\Projekt\test.bin", Temp, False)

Dann hat die datei 340487 Bytes. Aber warum ist meine Datei größer als 
der String den ich habe?

In den Daten ist alles Mögliche dabei, von 0 - 255 DEZ...

Hat jemand eine Idee wo das Problem liegt? Wenn ich zum Beispiel einen 
String in die Datei schreibe der kleiner ist z.B. 500Bytes dann geht 
alles gut.

MFG
#5076368
Lesenswert?

Was mir mal in C (das ja auch nur die WinAPI wrappt) passiert ist, ist 
dass Zeilenumbrüche \n zu \r\n konvertiert wurden, wenn man sich nicht 
im binary mode befand. Das hat mich einige Stunden gekostet. Kann gut 
sein, dass das hier auch der Fall ist. Generell würde ich bei der großen 
Abweichung aber darauf tippen, dass der bestimmte chars in Unicode 
Zeichen umwandelt. Generell solltest du für Binärdaten keine 
Textfunktion benutzen.

--> My.Computer.FileSystem.WriteAllBytes
#5076678
Lesenswert?

Steffen W. schrieb:
> Felix U. schrieb:
>> --> My.Computer.FileSystem.WriteAllBytes
>
> habe ich auch schon getestet, ist genau das selbe.

Wie bringst du denn die Werte in den String rein? len() wertet ein 
Unicode Zeichen als "1 Zeichen", geschrieben werden aber 2. Du musst 
also absolut sichergehen dass dein String nur UTF-8 ist, du darfst ihn 
also auch nicht von einem Char-Array erzeugen. Ich würde mal versuchen, 
gar keine Strings sondern nur Byte Arrays zu verwenden.

fpga schrieb:
> Wo her beziehst du diese Erkenntnis? Die Windows Dateigröße ist dank
> Dateisystem immer größer...

Im Eigenschaften Dialog wird die echte Größe und die Größe auf 
Datenträger angezeigt.
OP #5077407
Lesenswert?

Rufus Τ. F. schrieb:
> Könnte es sein, daß Deine Funktion an eine bestehende Datei anhängt?
>
> Hast Du schon mal den Inhalt der Datei betrachtet?

Nein, die Datei wird vorher gelöscht.


Rolf M. schrieb:
> Ist das wirklich Text, den du da hast? Binärdaten gehören nicht in einen
> String.

Nein es sind Binär daten, aber String war für mich das einfachste.
Ich teste es bei Gelegenheit mal mit einem Byte Array.

Grüße

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren