Datei Schreiben mit Visual Studio 2015

OP #5076346
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
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
Gast #5076612
> Aber warum ist meine Datei größer als der String den ich habe?

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

Gruß J
#5076678
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
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

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.