webForumDet fria alternativet

Förflytta sig bakåt i en stremreader

.NET

2 svar · 506 visningar · startad av l-boy

Medlem sedan juli 2003221 inlägg
Frågan#1

Använder mig av en StreamReader för att gå igenom en textfil, rad för rad.
När jag kommer till en viss rad har jag dock behovet av att stega framåt X antal rader för att hämta information, och sedan återvända dit jag var.
Tips på hur man kan lösa detta på snyggast möjliga sätt?

(ed: stavfel)

Medlem sedan aug. 20003 575 inlägg
#2

En streamreader jobbar alltid mot en Stream, inte alla Streams men en del kan man ändra Position på så t.ex.
Så du kan ändra vilken position i strömmen du skall vara på

stream.Position, tänk på att alla strömmar stödjer inte detta som t.ex. Nätverksströmmar.

Medlem sedan mars 20007 896 inlägg
#3

Filströmmar kan man förflytta sig i, men det är omständigt. Du får på något sätt hålla reda på själv var du förflyttar dig genom att lagra positionerna för var du slutade läsa och hur mycket du ska läsa (du förflyttar dig efter antal bytes, inte rader). Ta en titt på FileStream.Seek(offset, origin). Kanske det finns någon tredjepartslösning om du googlar tillräckligt noga. :)

Frågan är om det är det enklaste sättet att lösa ditt problem? Måste du läsa datan "lazy", eller kan du kanske lagra alla rader i en kollektion som är lättare att hantera?

274 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)