Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 6 odgovora
  • 3.837 pregleda

Najnovija ↓

C# kretanje po fajlu 30.04.2009. u 09:24 · pre 213 meseci
izmenjeno 1 put, poslednji put ® marsal ® 30.04.2009. u 09:34
  1. ® marsal ®30.04.2009. u 09:34zapis iz teksta poruke
#1
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
Potpis
®.....sve ove ruke mogu,sve ovo srce zna, ne boj se gaziti ponosno i gledaj kako to radim ja....
Re: C# kretanje po fajlu 30.04.2009. u 10:35 · pre 213 meseci
izmenjeno 1 put, poslednji put ® marsal ® 30.04.2009. u 10:56
  1. ® marsal ®30.04.2009. u 10:56zapis iz teksta poruke
#3
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.
Potpis
®.....sve ove ruke mogu,sve ovo srce zna, ne boj se gaziti ponosno i gledaj kako to radim ja....
Re: C# kretanje po fajlu 30.04.2009. u 12:17 · pre 213 meseci #5
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?
Potpis
®.....sve ove ruke mogu,sve ovo srce zna, ne boj se gaziti ponosno i gledaj kako to radim ja....
Re: C# kretanje po fajlu 30.04.2009. u 15:44 · pre 213 meseci #6
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


Potpis
Viva lollapalooza
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme