2017-01-17 5 views
-2

Скажем, у меня есть простой формат файлов, базирующийся на байт-кодах, для сохранения данных.
Если я хочу сохранить строку, должен ли я сделать это как в исходных файлах, где все символы между определенным байтом - это строка,
или мне нужно сначала сохранить длину строки, а затем строку байтов?Самый эффективный способ хранения строки в байтах?

Или оба решения являются ужасными, и если да, то какой из них я могу использовать?

+0

Что я сделал неправильно для нисходящего потока? – user3535030

ответ

0

Это зависит от того, хотите ли вы хранить:

  • одна строка
  • число строк
    • разные строки длины
    • все же длины

Для всех выше, это может также важно, если ваши строки содержат:

  • любые символы
  • только определенные символы
  • форматирования

В общем, вы должны использовать Unicode. Для одной строки вы можете просто использовать весь файл, чтобы содержать строку, конец файла будет таким же, как конец строки. Нет необходимости хранить длину строки.

Если строки не все (вокруг) одинаковой длины, вы можете использовать встроенный разделитель для разделения строк. Часто символ новой строки полезен для этого (особенно потому, что многие языки программирования поддерживают этот способ чтения в файле по очереди), но другие маркеры, такие как вкладка, являются общими.

CSV-текстовые файлы часто используют двойные кавычки, чтобы заключать строки, содержащие запятые (или другой разделитель столбцов) (что в противном случае указывало бы на начало следующего значения столбца) или разрывы строк (что в противном случае указывало бы на следующую строку).
Конечно, теперь у вас есть проблема с тем, как хранить двойную кавычку в вашей строке.

Если вы хотите сохранить форматирование, вы можете использовать язык разметки (html) или его может быть достаточно, чтобы разрешить разрывы строк и/или некоторую уценку.