webForumDet fria alternativet

Filläsare i C# - kan man skriva såhär?

.NET

2 svar · 637 visningar · startad av PollyJuice

Medlem sedan mars 2006124 inlägg
Frågan#1

En av deluppgifterna i min C#-laboration går ut på att man ska läsa in en textfil och dela in den i X antal sidor med 23 rader på varje sida. Så småningom ska jag kunna gå framåt och bakåt i texten med hjälp av knappar, och även välja valfri sida via en rullista, MEN för att klara detta måste jag först läsa in textfilen och dela upp den i rader. Varje rad ska sen läggas in i ett index i en array, så att jag sen kan skriva att sida 1 = [0] t.om. [22], sida 2 = [23] t.o.m. [45], osv.

Jag har för mig att jag ska använda mig av en nästlad for-sats, men kan jag läsa in en rad och lägga den i ett index i arrayen som jag har skrivit nedan?

  public const int LINES_PER_PAGE = 23;
  public void Page(string ”Hitch.txt”){
    string line=null;
    FileStream fs = new FileStream( "Hitch.txt", FileMode.Open );
    StreamReader reader = new StreamReader( fs );
    do{
String[] array = new String [array.length-1];
       for(int i = 0; i<LINES_PER_PAGE && ((line=reader.ReadLine())!=null);i++) 
{
for(String [j] = 0; j = i; j++;)
                }

    }while( line!=null);
  }
Medlem sedan maj 20012 812 inlägg
#2

Borde kunna förenkla det hela lite.

.
.
.
Arraylist array = new Arraylist();
while((line = reader.ReadLine()) != null)
{
 array.Add(line);
}
.
.
.

Dessa rader bör göra samma sak som du gör i din do-sats. Du får dina rader i en arraylist istället för en array, men det spelar nog ingen roll i ditt exempel. Skulle det vara så att du måste ha dina rader i en array istället för en arraylist så kan du på din arraylist göra en CopyTo() efter inläsningen och då kopiera över innehållet till en array istället.

Om du använder dig av .NET 2.0 så hade jag använt mig av en List<string> istället för arraylisten, men det är mer kosmetika, funktionen blir den samma i ditt fall...

- M

Medlem sedan apr. 20012 266 inlägg
#3

En annan sak man bör tänka på är att stänga FileStream när man är klar med den, görs lättast genom att använda using:

using(FileStream fs = new FileStream( "Hitch.txt", FileMode.Open))
{
   // resten av din kod här 
}
254 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)