Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# kretanje po fajlu

[es] :: .NET :: C# kretanje po fajlu

[ Pregleda: 2807 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

® marsal ®
Marko Djukovic
Pljevlja,Sabac,Novi Sad

Član broj: 58555
Poruke: 103
212.200.139.*



Profil

icon C# kretanje po fajlu30.04.2009. u 08:24 - pre 182 meseci
Pozdrav svima.

Interesuje me kako da se u nekom txt fajlu pozicioniram na konkretnu liniju teksta i da je procitam. Znaci , direktno pozicioniranje na zeljenu liniju u fajlu.
Znam kako da idem od pocetka fajla pa do kraja i da dodjem do zeljene linije. Fajl koji posmatram je suvise veliki pa mi treba pozicioniranje na konkretnu liniju.

P.S. U sustini da li moze da se klasi StreamReader doda pozicija od koje da posmatra, a ako moze, KAKO?


znaci na primer u txt fajlu imam sledece:

1.pera
2.mika
3.zika

E sada bih da se nekako odmah pozicioniram na trecu liniju i da procitam zika

Hvala

[Ovu poruku je menjao ® marsal ® dana 30.04.2009. u 09:34 GMT+1]
®.....sve ove ruke mogu,sve ovo srce zna, ne boj se gaziti ponosno i gledaj kako to radim ja....
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-1.sezampro.yu.



+395 Profil

icon Re: C# kretanje po fajlu30.04.2009. u 09:14 - pre 182 meseci
http://msdn.microsoft.com/en-us/library/s2tte0y1.aspx
Procitas ceo fajl sa ReadAllLines() i smestis ga u niz stringova .
indexi ovog niza su tu linije texta .

Viva lollapalooza
 
Odgovor na temu

® marsal ®
Marko Djukovic
Pljevlja,Sabac,Novi Sad

Član broj: 58555
Poruke: 103
212.200.139.*



Profil

icon Re: C# kretanje po fajlu30.04.2009. u 09:35 - pre 182 meseci
Ne smem tako, trebalo bi da posmatram fajl, i da ostanem na poslednje procitanom delu. I cim se jos nesto doda u taj fajl, da samo to procitam i da cekam sledeceu izmenu. To bi mi bilo isuvise sporo. da stalno ucitavam fajl.

Znaci nekako da se direktno pozicioniram na zeljenu liniju i fajlu.

[Ovu poruku je menjao ® marsal ® dana 30.04.2009. u 10:56 GMT+1]
®.....sve ove ruke mogu,sve ovo srce zna, ne boj se gaziti ponosno i gledaj kako to radim ja....
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-1.sezampro.yu.



+395 Profil

icon Re: C# kretanje po fajlu30.04.2009. u 10:28 - pre 182 meseci
Pa onda sa FileStream-om i Seek funkcijom .
Trazis crlf po fajlu i sa Seek-om setujes poziciju ..
http://msdn.microsoft.com/en-u...system.io.filestream.seek.aspx
Ili sa ReadByte metodom pronadjes crlf Position property ti daje poziciju novog reda ..

Viva lollapalooza
 
Odgovor na temu

® marsal ®
Marko Djukovic
Pljevlja,Sabac,Novi Sad

Član broj: 58555
Poruke: 103
212.200.139.*



Profil

icon Re: C# kretanje po fajlu30.04.2009. u 11:17 - pre 182 meseci
Dal mozda nemas neki primer kako da mu zadam direktno poziciju na koju da mi ode. Probao sam sa Seek() ali ona se seta po clanovima odredjene linije.
Nije mi bas najjasnije ovo crlf za sta sluzi, da nemas mozda neki primercic?
®.....sve ove ruke mogu,sve ovo srce zna, ne boj se gaziti ponosno i gledaj kako to radim ja....
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-1.sezampro.yu.



+395 Profil

icon Re: C# kretanje po fajlu30.04.2009. u 14:44 - pre 182 meseci
Crlf ili carriage return line feed - znak za novi red ("\r\n")
Code:

using (FileStream fsSource = new FileStream(@"C:\text.txt",FileMode.Open, FileAccess.Read))
{
  
                                                 
  long numBytesToRead = fsSource.Length;
  int nBytesRead = 0;
  while (numBytesToRead > fsSource.Position)
  {
               
     byte[] c = new byte[1];
     fsSource.Read(c, 0, 1);

     char[] str = System.Text.ASCIIEncoding.ASCII.GetChars(c);

     if (str[0] == '\r')
     {
          fsSource.Read(c, 0, 1);
          str = System.Text.ASCIIEncoding.ASCII.GetChars(c);
          if (str[0] == '\n')
          {
               long nPos = fsSource.Position;  // pozicija novog reda ... 
          }
      }
                                
  }

    fsSource.Close(); 
}



Ovaj primer vazi samo za fajlove sa Asci encodingom ...
ako budes hteoa da napravis univerzalnu rutinu i za Unicode i za Asci ..
moraces da detektujes encoding u samom fajlu da bi znao velicinu buffera

byte[] c = new byte[1]; za asci
byte[] c = new byte[2]; za unicode
kao i razlicite metode :

System.Text.ASCIIEncoding.ASCII.GetChars(c);
System.Text.UnicodeEncoding.Unicode.GetChars(c);
itd ..

U .NET frejmvorku postoje nacini za detektovanje :
Code:
 

  StreamReader sr = new StreamReader(fsSource, true);
   Encoding enc = sr.CurrentEncoding; 

Medjutim ovaj metod nije pouzdan i ne detektuje kako treba
stoga probaj odavde da izvuces trenutni enkoding za fajl ..
http://www.west-wind.com/WebLog/posts/197245.aspx



Viva lollapalooza
 
Odgovor na temu

[es] :: .NET :: C# kretanje po fajlu

[ Pregleda: 2807 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.