Citanie z textoveho suboru od konca po nejaky urcity riadok – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Citanie z textoveho suboru od konca po nejaky urcity riadok – .NET – Fórum – Programujte.comCitanie z textoveho suboru od konca po nejaky urcity riadok – .NET – Fórum – Programujte.com

 

Tayson0
Stálý člen
19. 11. 2013   #1
-
0
-

Zdravim

Je mozne mat textovy subor a potom si ho otvorit a citat od posledneho riadku cize od konca smerom nahor cize na zaciatok? Ako to docielim ?

Nahlásit jako SPAM
IP: 195.146.129.–
JoDiK
~ Anonymní uživatel
987 příspěvků
19. 11. 2013   #2
-
0
-

#1 Tayson
Nejdřív zkus následující: představ si, že máš špulku záchodovýho papíru, kde je na každém útržku napsaný nějaký citát. Přečti si nejdřív citát na posledním útržku, ale přitom nerozmotávej tu špulku. Až se ti to povede, přečti si citát na předposledním útržku...

Něco takového chceš dělat s tím souborem, takže až to dokážeš se záchodovým papírem, zvládneš to i s textovým souborem.

Jediná možnost je načíst si ten soubor do operační paměti RAM rozdělený na jednotlivé řádky a pak číst od poslední položky pole/seznamu/listu/kolekce nebo jak je libo...

BTW RAM=Random access memory=paměť s náhodným přístupem=paměť, kde lze "číst" z libovolného místa nezávisle na předchozích operacích, což při čtení z textového soubor nelze...

Nahlásit jako SPAM
IP: 88.103.236.–
VladislavK0
Super člen
19. 11. 2013   #3
-
0
-

No to je ale hezka odpoved!!!!

Nahlásit jako SPAM
IP: 37.48.32.–
Manželka programátora pošle svého muže koupit chleba s dovětkem kdyby měly housky přines jich deset! Co přinese programátor??
KIIV
~ Moderátor
+43
God of flame
19. 11. 2013   #4
-
0
-

nebo taky muze pouzit namapovani souboru do pameti.. ale to uz je OS specific reseni...

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Tayson0
Stálý člen
19. 11. 2013   #5
-
0
-

#4 KIIV
#2 JoDiK
#3 VladislavK
No lenze ten subor moze mat aj 200 MB a bolo by asi neprakticke aby som ho cely nacital do operacnej pamäte... len potrebujem asi od konca subora prehladat par riadkov 

Nahlásit jako SPAM
IP: 158.193.83.–
KIIV
~ Moderátor
+43
God of flame
19. 11. 2013   #6
-
0
-

200MB neni zase tak moc... :)

holt pouzij fseek a prochazej bloky od konce

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
JardaJirava0
Stálý člen
19. 11. 2013   #7
-
0
-

Ahoj,

nenapsal jsi, jestli je to textový soubor s pevnou délkou řádku. Pak bys měl možnost si spočítat, na jakou Position se přesuneš a můžeš číst od této pozice. V opačném případě to bude hodně složité a pak máš možnost náhodně střílet pozici a přečíst si nějaký blok, který zpracuješ.

Pěkný den,

Nahlásit jako SPAM
IP: 77.78.85.–
MCAD, MCPD
http://jirava.net/blog
http://xaml.cz - Magazín moderních technologií založených na XAML
VladislavK0
Super člen
19. 11. 2013   #8
-
0
-

No a taky nepises jestli je ten soubor opravdu radkovanej CRLF nebo podobne nebo jestl tam jsou nejaky oddelovace obecne

Proste ptas se jak cist od konce a nepodas zadnou vstupni info - jak ti ma nekdo poradit

Kdyby byly nejaky obecny oddelovace tak si celej ten soubor nahraju do jednoho dlouhyho stringu pak je spocitam treba pomoci Splitu tim ziska nejen pocet radku v tom file ale take pole indexovatelne od 0 do max

string tx= reader.ReadToEnd();
string tt[]=tx.Split( oddelovac);
for(int i=tt.Length;i > 0; i++) // indexuji od konce
{
   if(tt[i]=="Hledany text")
   {
	// schovam si vyhledany text
	break; // ukoncim smycku
   }
}
 // a tady dale zpracuji 

a jsme u spulky s hajzl papirem

Nahlásit jako SPAM
IP: 37.48.32.–
Manželka programátora pošle svého muže koupit chleba s dovětkem kdyby měly housky přines jich deset! Co přinese programátor??
Tayson0
Stálý člen
19. 11. 2013   #9
-
0
-

#7 JardaJirava
No je to obyčaný textový súbor v notepade a pre zapis pouzivam StreamWriter

Nahlásit jako SPAM
IP: 158.193.83.–
Tayson0
Stálý člen
19. 11. 2013   #10
-
0
-

#8 VladislavK
No ja si tak či tak zapisujem tie data do textoveho suboru a su to v podstate logy ... zapisujem ich do notepadu pomocou StreamWriter ..... ale v určitom bode potrebujem tie data analyzovat a preto potrebujem od konca tohto textoveho suboru čitať späť po nejake miesto data .... ono som to skušal aj tak že som si vytvoril List <string> a tam som si tie data zapisoval a potom ich cez foreach vypisoval ....Problem bol ale v tom ze tam neboli vsetky data iba niektore zapisane v tom Liste ... tomu som nechapal preco tam raz su a raz niesu ... tie data v podstate prichadzaju cez UDP protokol a ukladaju sa mi do premennej ... z tej premennej potom zapisujem tie data do notepadu a zapise vsetky ale ak si z tej premennej spravim staticku premennu a pouzijem v inej triede pre zapis do Listu tak niektore data vynecha

Nahlásit jako SPAM
IP: 158.193.83.–
VladislavK0
Super člen
19. 11. 2013   #11
-
0
-

Ha ted koukam ze jsem do toho kodu napsal nekolik skolackych chyb   

Nahlásit jako SPAM
IP: 37.48.32.–
Manželka programátora pošle svého muže koupit chleba s dovětkem kdyby měly housky přines jich deset! Co přinese programátor??
VladislavK0
Super člen
19. 11. 2013   #12
-
0
-

A kdyz uz to teda zapisujes pomoci StreamWrite do souboru davas tam ty oddelovace o kterych pisu vyse???

Nahlásit jako SPAM
IP: 37.48.32.–
Manželka programátora pošle svého muže koupit chleba s dovětkem kdyby měly housky přines jich deset! Co přinese programátor??
VladislavK0
Super člen
19. 11. 2013   #13
-
0
-

Problem bol ale v tom ze tam neboli vsetky data iba niektore zapisane v tom Liste ... tomu som nechapal preco tam raz su a raz niesu ...

Toto ani ja nechapu preco jednou su a jednou nejsu

Dej sem vypis to souboru tak 10-20 prvních radku 

Nahlásit jako SPAM
IP: 37.48.32.–
Manželka programátora pošle svého muže koupit chleba s dovětkem kdyby měly housky přines jich deset! Co přinese programátor??
Tayson0
Stálý člen
19. 11. 2013   #14
-
0
-

#13 VladislavK
No lebo celkom ma tam byt isty pocet riadkov s nejakym obsahom .... ale raz tam su vsetky potrebne data a inokedy tam je len polovica potom zase druha polovica .... akoby to robilo nahodne 

Nahlásit jako SPAM
IP: 158.193.83.–
Tayson0
Stálý člen
19. 11. 2013   #15
-
0
-

#12 VladislavK
No mam pocit ze tie data ktore prichadzaju su z oddelovacmi 

Nahlásit jako SPAM
IP: 158.193.83.–
m4r100
Návštěvník
20. 11. 2013   #16
-
0
-

Tady je kod, ktery pouzivam na webu. Cte to soubor od zadu, nenacita vsechno do pameti.

https://gist.github.com/Marfusios/7566484

Nahlásit jako SPAM
IP: 78.102.208.–
Tayson0
Stálý člen
20. 11. 2013   #17
-
0
-

#16 m4r10
No vyzera to byt dost dlhe .... asi skusim nejaky jednoduchsi sposob 

Nahlásit jako SPAM
IP: 158.193.83.–
Tayson0
Stálý člen
20. 11. 2013   #18
-
0
-

#13 VladislavK
Moze staticka premenna z jednej triedy ktora je pouzita v druhej triede robit problemy ? Myslim to tak ze ta staticka premenna sa meni dynamicky a ze ci sa da plnohodnotne sledovat v inej triede

Nahlásit jako SPAM
IP: 158.193.83.–
JoDiK
~ Anonymní uživatel
987 příspěvků
21. 11. 2013   #19
-
0
-

#5 Tayson

Nezkoumal jsem podrobně, co psal m4r10, ale myslím, že to bude podobné řešení:

Otevři ten soubor jako typový, skoč v něm (fseek) na pozici začátku bloku zvolené velikosti, přečti daný počet bajtů do paměti, převeď na řetězce dle oddělovačů a prozkoumej. Když nenajdeš co hledáš, posuň se dopředu (fseek) a přečti blok předtím (asi bude zapotřebí posunout začátek předchozího bloku o počet znaků prvního řádku, aby se dočetl i i jeho zbytek a zpracoval celý)...

Nahlásit jako SPAM
IP: 88.103.236.–
JoDiK
~ Anonymní uživatel
987 příspěvků
21. 11. 2013   #20
-
0
-

#19 JoDiK
vypadlo mi jedno slovo:

skoč v něm (fseek) na pozici začátku posledního bloku v souboru zvolené velikosti

Nahlásit jako SPAM
IP: 88.103.236.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 51 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý