Класс StreamReader
является типичным выбором для линейного считывания файла. Он не поддерживает историю того, что он читает в файле, и поэтому не знает, где заканчивается последняя строка или где будет следующая. По запросу (через ReadLine
) он просто обрабатывает символы, пока не достигнет новой строки строки или конца файла.
Я не знаю фактической реализации StreamReader, но я бы предположил, что он использует класс Encoding
для обработки многобайтовых кодировок и поддерживает только небольшой буфер потенциально предварительно прочитанных данных для повышения производительности чтения (чтение фрагментов лучше, чем просто 10 байтов, которые вам нужны сейчас). Любые другие буферы, такие как символы в текущей строке, будут локальными для таких функций, как ReadLine
, которые им нужны.
Если вам нужно искать случайным образом, вам нужно будет использовать свойство BaseStream
, чтобы создать таблицу строк для себя, а затем искать этот поток в начале нужной строки. Оттуда вы, как обычно, сможете использовать ReadLine
.
Я заметил, что устройство чтения потока не имеет свойств смещения. Это где basestream kicksin? Да, мне нужны таблицы запуска линий. Я полагаю, –
+1. Это все. Я понял. –