2009-02-26 3 views
0

Wie geben Sie an, wo in einer Datei beim Lesen von StreamReader zu lesen ist?Wie geben Sie an, wo in einer Datei beim Lesen von StreamReader zu lesen ist?

Ich habe ein streamreader-Objekt zusammen mit einem Datei-Stream-Objekt erstellt. Nachdem ich beide Objekte erstellt habe, wie würde ich steuern, wo der StreamReader aus einer Datei lesen soll?

Lasst uns den Inhalt der Datei sagen, sind wie folgt,

// song list. 
// junk info. 
1. Song Name 
2. Song Name 
3. Song Name 
4. Song Name 
5. Song Name 
6. Song Name 

Wie würde ich die Stream Kontrolle von wir 2 # lesen sagen? Wie könnte ich auch steuern, wo es durch ein ähnliches Trennzeichen wie bei # 5 aufhören zu lesen?

Edit: Mit dem Trennzeichen Ich meine, auf eine Art und Weise Stream aus (‚2.‘) Lesen zu machen beginnen

+0

Wenn Sie als Kommentare markierte Zeilen ignorieren möchten, ist es viel einfacher, sie normal zu lesen und dann zu filtern. –

Antwort

1

Sind Sie versuchen, eine Datei in eine In-Memory-Objekt deserialisieren? Wenn dies der Fall ist, können Sie die gesamte Datei einfach unter Verwendung von ReadLine oder ähnlichem analysieren, jede Zeile speichern und dann über eine Datenstruktur wie z. B. KeyValuePair<int, string> darauf zugreifen.

Update: Ok ... Mit den neuen Informationen, denke ich, haben Sie zwei Möglichkeiten. Wenn Sie lesen, bis Sie eine Übereinstimmung finden, können Sie Peek(), überprüfen, ob der Charakter der gesuchte ist, und dann Read(). Alternativ, wenn Sie nach einer festen Position suchen, können Sie einfach Read() viele Zeichen eingeben und den Rückgabewert wegwerfen.

Wenn Sie nach komplexen Trennzeichen suchen, können Sie die gesamte Zeile oder sogar die gesamte Datei in den Speicher lesen und Regular Expressions verwenden.

Hoffe, dass hilft ...

1

Wenn die Datei neue Zeile enthält delimiters Sie ReadLine lesen eine Zeile zu einem Zeitpunkt verwenden können.

Um mit dem Lesen von Zeile 2 zu beginnen, lesen Sie die erste Zeile und verwerfen und lesen Sie die Zeilen bis Zeile 5.