2012-04-04 3 views
0

Файл является текстовым файлом UTF8.Как получить строку из большого файла, если вы знаете смещение

Каждый символ имеет различное количество байтов, и каждая строка имеет различное количество символов.

Есть ли в vb.net таблица номеров строк в функции определения байтов или что-то в этом роде?

Также после этого, как читать это?

ответ

1

Класс StreamReader является типичным выбором для линейного считывания файла. Он не поддерживает историю того, что он читает в файле, и поэтому не знает, где заканчивается последняя строка или где будет следующая. По запросу (через ReadLine) он просто обрабатывает символы, пока не достигнет новой строки строки или конца файла.

Я не знаю фактической реализации StreamReader, но я бы предположил, что он использует класс Encoding для обработки многобайтовых кодировок и поддерживает только небольшой буфер потенциально предварительно прочитанных данных для повышения производительности чтения (чтение фрагментов лучше, чем просто 10 байтов, которые вам нужны сейчас). Любые другие буферы, такие как символы в текущей строке, будут локальными для таких функций, как ReadLine, которые им нужны.

Если вам нужно искать случайным образом, вам нужно будет использовать свойство BaseStream, чтобы создать таблицу строк для себя, а затем искать этот поток в начале нужной строки. Оттуда вы, как обычно, сможете использовать ReadLine.

+0

Я заметил, что устройство чтения потока не имеет свойств смещения. Это где basestream kicksin? Да, мне нужны таблицы запуска линий. Я полагаю, –

+0

+1. Это все. Я понял. –

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