2016-09-12 3 views
0

Ich fand, dass es einen merkwürdigen Größenunterschied zwischen der Größe der Zeichenkette und der Größe der Datei gibt, warum ist das und wie man dieses Problem löst? DieseDateigröße und Größenunterschied der Zeichenfolge, warum ist das so?

ist, wie ich die Zeichenfolge die Größe erhalten:

int bytesInStr = Encoding.Unicode.GetByteCount(str); 

Zunächst möchte ich eine Datei mit einer gewissen Größe erstellen. Also in meiner Schleife ich die Gesamtgröße aller geschriebenen Zeichenfolgen berechnen:

totalSize+=bytesInStr 

Aber die Dateigröße ist etwa zweimal weniger.

+1

Sie sollten eine [mcve] erstellen, warum ist das auch ein Problem? .. Warum ist die Dateigröße wichtig? – Sayse

+1

Die Größe einer Textdatei ist die Anzahl der Bytes, die zur Darstellung des Textes in der für diese Datei gewählten Codierung verwendet werden. 'Unicode' ist 16-Bit für jedes Zeichen. –

+0

@ LasseV.Karlsen Wird die Byte Order Mark (BOM) berücksichtigt? –

Antwort

2

Ihre Datei wird mit einer anderen Kodierung geschrieben als die, die Sie verwenden, um die Byteanzahl der Zeichenfolge zu ermitteln. Sie müssen das gleiche (z. B. Encoding.Unicode) für beide verwenden.

1

Was Luaan gesagt hat, ist völlig richtig, aber selbst wenn Sie die Kodierungen anpassen, wird es einen kleinen Unterschied geben. Erstens wegen der Dateizusammenfassung und der Attribute, die nicht im Stream gelesen werden, zweitens wegen des Dateisystems, was entweder zu Fragmentierung oder Komprimierung führt. Es ist offensichtlich, wenn Sie das Eigenschaftenfenster Ihrer Datei öffnen, die Größe auf der Festplatte und die Originalgröße abweichen. Warum? Nun, das braucht mehr als mein Wissen. Ich hoffe, es hat geholfen.

Verwandte Themen