UNPAIKTABLE Δημοσ. 1 Ιουλίου 2004 Δημοσ. 1 Ιουλίου 2004 Kalispera all, xreiazomai na diavasw me java ena log arxeio, apo network hardware.. alla epeidh einai terastio to arxeio (ths taksews twn 5mb) kai me endiaferoun mono oi teleftaies grammes (me ta pio prosfata events), einai asymforo na to diavasw apo thn arxh mexri na ftasw sto telos. Kserei kaneis an yparxei kanenas sigouros tropos na diavasw mia-mia tis grammes, anapoda, ksekinontas apo to telos? Eida to implementation ths readline() kai prospathisa na ftiaksw mia dikh mou readPreviousLine(), ektelontas ton algorithmo ths readline() anapoda. H methodos afth, deixnei na doulevei, alla dystyxws mono otan ths dinw ena mikrotero arxeio na diavasei, se sxesh me to .log twn 5mb. Sta 5mb trwei frikes.. Epishs, koitaksa kapoia pragmata panw se SeekableFileStream (an thymamai kala, variemai na anoigw to API gia to onoma ) kai thymamai pws yparxoun oi functions mark() kai reset(). Alla afto de me voithaei na ksekinhsw apo thn teleftaia grammh tou arxeiou kai na anevainw mia-mia pros ta panw, anapoda dhladh.. H readPreviousLine() ousiastika pairnei ton arithmo twn bytes tou arxeiou, kanei seek() to teleftaio byte, kai apo ekei xrhsimopoiei dikous mou pointers gia na entopizei ta diadoxika "new line" \n kai "carriage return" \r, mexri na ftasei sthn prwth grammh tou file.. Alla den mporw na katalavw poio einai to provlhma megethous pou yparxei me to na diavasei to .log arxeio twn 5mb.. Opoiadhpote apopsh panw sto thema, tha thn diavaza me arketo endiaferon. Efxaristw
Dionisos Δημοσ. 2 Ιουλίου 2004 Δημοσ. 2 Ιουλίου 2004 UNPAIKTABLE, giati den xrhsimopoieis random access files? Mporeis na anoi3eis to arxeio kai na proxwrhseis osa bytes 8eleis kai na diavaseis apo ekei kai pera. Leptomereies sto tutorial ths Sun Filika Dionisos
UNPAIKTABLE Δημοσ. 2 Ιουλίου 2004 Μέλος Δημοσ. 2 Ιουλίου 2004 Me random access files doulevw, proxwraw osa bytes einai to megethos tou arxeiou, ftanw sto telos, kai thelw na diavazw mia-mia tis grammes pros ta pisw. Px. skepsou oti to .log arxeio krataei alarms pou ginontai fired-up sto diktyo.. kai kathe grammh sto text file exei ena timestamp. Oso proxwras pros ta katw, to timestap megalwnei.. kai h teleftaia grammh antistoixei sto pio prosfato alarm. Thelw omws na diavasw to arxeio, kai na parw ta alarms gia tis teleftaies 2 wres as poume. Opote, skefthka na diavasw mia mia tis grammes apo to telos pros ta panw, koitazontas to timestamp ths kathe grammhs, kai ypologizontas 2 wres apo to teleftaio alarm. Otan h diafora ths teleftaias grammhs me thn grammh thn opoia diavazw (ypenthimizw, diavazw apo katw pros ta panw) einai megalyterh apo 2 wres, tote stamataw ekei kai eite diavazw oles tis grammes ksana ws to telos 'h tis exw hdh apothikefsei hdh se ena array, kathws tis diavaza kai synexizw apo ekei. Endeiktika, oi grammes tou log file tha mporousan na einai kapws etsi: (tis exw aploustefsei arketa gia na mhn gemisei to parathyro) > [Date] [Time] [Alarm String] [RTT] 2004-06-07 00:11:47 Warning 285 2004-06-07 00:12:47 Info 16 2004-06-07 00:40:47 Warning 200 . . . . Cheers mate Opoios allos mporei na voithisei, eite me mia idea gia syzhthsh, einai more than welcome Thanks
UNPAIKTABLE Δημοσ. 2 Ιουλίου 2004 Μέλος Δημοσ. 2 Ιουλίου 2004 Mallon vrhka poio einai to provlhma.. to .log arxeio ginetai generated se unix perivalon, kai h kathe grammh tou arxeiou teleiwnei mono me \n. Enw to text arxeio pou ekana sta windows gia na testarw to programa. sto telos kathe grammhs exei \r\n... Mysthria pragmata
Dionisos Δημοσ. 2 Ιουλίου 2004 Δημοσ. 2 Ιουλίου 2004 Nai afto einai alh8eia oti yparxei diafora, mporeis omws na ftia3eis to java programmataki sou na doulevei se ola ta perivalonta psaxnontas gia to > System.getProperty("line.separator") Afto epistrefei \n se *nix perivallonta (kai MacOS nomizw) kai \r\n se Windows. Filika Dionisos
abudakos Δημοσ. 6 Ιουλίου 2004 Δημοσ. 6 Ιουλίου 2004 mporeis na koitakseis ton kodika tou unix gnu utility 'tail' h' auto http://www.pushtotest.com/Wiki/WebTail to tail eiani ena utility pou sou gyrizei kapoio fixed arithmo ton teleutaion grammon enos arxeiou. mporeis na to peirakseis na sou gyrizei oses thes.
Γηρυόνης Δημοσ. 14 Ιουλίου 2004 Δημοσ. 14 Ιουλίου 2004 Αυτό που θα έκανα εγώ είναι: Runtime.getRuntime().exec("tail -n 10 mylogfile.log"); και θα διάβαζα το i/o stream του Process για να μπορέσω να διαβάσω τις τελευταίες 10 γραμμές. Αν δε θέλεις να έρθεις σε deadlock κατάσταση θα πρέπει να διαβάσεις το input και output stream σε διαφορετικά threads. Ο παραπάνω κώδικας θα παίξει μόνο σε *nix συστήματα.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.