2016-09-12 2 views
0

Я нашел странную разницу в размере между строкой и размером файла, почему это и как решить эту проблему?Размер файла и разница в размере строки, почему?

Это, как я получить размер струны:

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

Сначала я хочу, чтобы создать файл некоторого размера. Так что в моем цикле рассчитать общий размер всех письменных строк:

totalSize+=bytesInStr 

Но размер файла примерно в два раза меньше.

+1

Вы должны создать [mcve], почему это тоже проблема? .. Почему размер файла имеет значение? – Sayse

+1

Размер текстового файла - это количество байтов, используемых для представления текста в кодировке, выбранной для этого файла. «Юникод» - 16 бит для каждого символа. –

+0

@ LasseV.Karlsen Учитывается знак байта (BOM)? –

ответ

2

Ваш файл написан с другим кодированием, чем тот, который вы используете, чтобы получить количество байтов строки. Вы должны использовать тот же (например, Encoding.Unicode) для обоих.

1

То, что сказал Luaan, совершенно правильно, но даже если вы согласитесь с кодировками, будет небольшая разница. Во-первых, из-за сводки файла и атрибутов, которые не читаются в потоке, во-вторых, это может быть из-за файловой системы, вызывающей фрагментацию или сжатие. Очевидно, что если вы откроете окно свойств вашего файла, размер на диске и размер оригинала отличаются. Зачем? Ну, это больше, чем мне известно. Надеюсь, это помогло.

Смежные вопросы