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 ?
#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...
No to je ale hezka odpoved!!!!
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,
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
#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
Ha ted koukam ze jsem do toho kodu napsal nekolik skolackych chyb
A kdyz uz to teda zapisujes pomoci StreamWrite do souboru davas tam ty oddelovace o kterych pisu vyse???
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
#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ý)...
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku