Как вы указываете, с чего начать чтение в файле при использовании StreamReader?
-
09-09-2019 - |
Вопрос
Как вы указываете, с чего начать чтение в файле при использовании StreamReader?
Я создал объект streamreader вместе с объектом file stream .После того, как оба объекта будут созданы, как я буду управлять тем, где я хочу, чтобы StreamReader начал чтение из файла?
Допустим, содержимое файла выглядит следующим образом,
// song list.
// junk info.
1. Song Name
2. Song Name
3. Song Name
4. Song Name
5. Song Name
6. Song Name
Как бы я мог управлять программой streamreader для чтения, скажем, из # 2?Кроме того, как я мог бы также контролировать, где заставить его прекратить чтение с помощью аналогичного разделителя, например, в # 5?
Редактировать:Под разделителем я подразумеваю способ заставить StreamReader начать чтение с ('2.')
Решение
Вы пытаетесь десериализовать файл в какой-то объект в памяти?Если это так, вы можете просто проанализировать весь файл с помощью ReadLine
или что-то подобное, сохраните каждую строку, а затем получите к ней доступ через структуру данных, такую как KeyValuePair<int, string>
.
Обновить:ОК...Учитывая новую информацию, я думаю, у вас есть два варианта.Если вы смотрите на чтение до тех пор, пока не найдете совпадение, вы можете Peek()
, проверьте, тот ли персонаж, которого вы ищете, а затем Read()
.В качестве альтернативы, если вы ищете заданную позицию, вы можете просто Read()
столько символов и выбрасываем возвращаемое значение.
Если вы ищете сложный разделитель, вы можете прочитать всю строку или даже весь файл целиком в память и использовать Регулярные выражения.
Надеюсь, это поможет...
Другие советы
Если файл содержит новые разделители строк, вы можете использовать Строка чтения читать по строчке за раз.
Итак, чтобы начать чтение со строки № 2, вы должны прочитать первую строку и отбросить, а затем прочитать строки до строки № 5.
Что ж, если содержимое представляет собой просто обычный текст, подобный этому, вам следует использовать метод ReadLine StreamReader.
http://msdn.microsoft.com/en-us/library/system.io.streamreader.readline.aspx
-Ойсин