[ruby-it] direttamente a fine file?
paolo foletto
paolo.foletto a gmail.com
Mer 18 Apr 2007 11:43:12 CEST
secondo me, un conto è mappare un memoria un file di 100 mb
andare con il puntatore agli ultimi n byte e questo potrebbe
essere un lavoro sostanzialemente a carico del S.O.
che potrebbe essere talmente furbo da non caricare i 100 mb
ma da farlo solo on demand
in genere la gestione dei mapped file funziona così
un altro è quello di cercare le righe e questo richiede sicuramente
di leggere ogni singolo byte per individuare i new line
Ciao Paolo
On 4/18/07, david <david.palm a iperbole.bologna.it> wrote:
>
> Magari potresti usare ´tail -n 1´? Cioè chiamare un commando shell e
> prendere il pezzo che ti serve dal output...
>
> (cmq il problema rimane: se "tail" sa trovare la fine senza tenere in
> RAM tutto il file, perché Ruby e File non lo sa fare?)
>
> Giovanni Intini wrote:
> > Hai due strade: 1) Iterare linea per linea con File.readline oppure 2)
> > usare seek spostandoti ad una distanza dalla fine abbastanza generosa
> > e poi iterare da lì.
> >
> > Sicuramente qualcuno più intelligente di me troverà una soluzione
> > migliore .)
> >
> > Il giorno 18/apr/07, alle ore 10:58, Mauro Sanna ha scritto:
> >
> >> Il giorno mer, 18/04/2007 alle 10.49 +0200, Giovanni Intini ha scritto:
> >>> Last è un metodo di Array. Readlines restituisce un array che
> >>> contiene tutto il file, splittato per righe. Per avere info su questi
> >>> metodi puoi usare "ri Array" e "ri File" dalla linea di comando.
> >>>
> >>> c'è File#seek che ti può portare direttamente a fine file, o a n byte
> >>> dalla fine del File, ma non "all'inizio dell'ultima riga del file".
> >>
> >> si ho visto File#seek ma per leggere i primi n caratteri dell'ultima
> >> riga devo conoscerne la lunghezza, siccome non posso sapere quanto sono
> >> lunghe le singole righe del file mi sembra che la soluzione migliore
> sia
> >> usare readlines.
> >> Certo pero' che riempirmi la memoria, il file e' abbastanza grosso,
> solo
> >> per leggere alcuni caratteri della prima e dell'ultima riga mi rompe un
> >> po'.
> >>
> >> _______________________________________________
> >> Ml mailing list
> >> Ml a lists.ruby-it.org
> >> http://lists.ruby-it.org/mailman/listinfo/ml
> >
> > _______________________________________________
> > Ml mailing list
> > Ml a lists.ruby-it.org
> > http://lists.ruby-it.org/mailman/listinfo/ml
> >
>
> --
> "When all you have is a hammer, everything looks like a nail"
>
> _______________________________________________
> Ml mailing list
> Ml a lists.ruby-it.org
> http://lists.ruby-it.org/mailman/listinfo/ml
>
Maggiori informazioni sulla lista
Ml