2009-02-26 3 views
0

Как указать, где начать чтение в файле при использовании StreamReader?Как указать, где начать чтение в файле при использовании StreamReader?

Я создал объект streamreader вместе с объектом потока файлов. После создания обоих объектов, как бы я мог контролировать, где я хочу, чтобы 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?

Edit: Под разделителем я имею в виду, способ сделать StreamReader начать чтение («2.»)

+0

Если вы хотите игнорировать строки, помеченные как комментарии, их намного проще читать, а затем фильтровать. –

ответ

1

Вы пытаетесь десериализации файл в какой-либо объект в памяти? Если это так, вы можете просто проанализировать весь файл с помощью ReadLine или чего-то подобного, сохранить каждую строку, а затем получить доступ к ней через структуру данных, такую ​​как KeyValuePair<int, string>.

Обновление: Хорошо ... С новой информацией, я думаю, у вас есть два варианта. Если вы ищете чтение до тех пор, пока не найдете совпадение, вы можете Peek(), проверьте, соответствует ли тот персонаж, а затем Read(). В качестве альтернативы, если вы ищете заданное положение, вы можете просто Read(), чтобы много символов и выбрасывали возвращаемое значение.

Если вы ищете сложный разделитель, вы можете прочитать всю строку или даже весь файл в памяти и использовать Regular Expressions.

Надеюсь, что это поможет ...

1

Если файл содержит новую строку разделителей можно использовать ReadLine читать построчно.

Чтобы начать чтение в строке # 2, вы должны прочитать первую строку и отбросить, а затем прочитать строки до строки # 5.

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

  • Нет связанных вопросов^_^