Come leggere ultima riga di un file txt

martedì 22 maggio 2012 - 17.06

trinity Profilo | Guru

Ragazzi,
leggo un file txt con streamreader....ma prima che inizio il ciclo di lettura è possibile ricavare direttamente l'ultima riga del file?
mi spiego meglio questi record contengono delle date a me serve leggere la prima data del prima record e lo attribuisco ad una variabile poi eseguo la procedura di lettura di tutti i record ed infine all'ultimo record devo prendere la data ed attribuirla ad un'altra variabile, queste due variabili mi serviranno per eseguire una select sql e ricavare altri dati..

tutto qui ;)

ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

luigidibiasi Profilo | Guru

non saprei... non hai la possibilità di fare una fseek spostarti alla fine del file e leggerlo all'indietro?
Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
http://yadamp.unisa.it/ - YADAMP CMS -

trinity Profilo | Guru

Si ma comunque mi troverei allo stesso punto...se non erro :)
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

luigidibiasi Profilo | Guru

scusa...
tu devi leggere una data alla fine del file...
se il file è strutturato non puoi fare
fseek(filedescriptor,SEEK_END)
leggi l'ultima data
fseek(filedescriptor,0,SEEK_SET) ' ti riporti all'inizio
leggi la prima data


forse sono io che non ho ben compreso cosa devi fare
Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
http://yadamp.unisa.it/ - YADAMP CMS -

trinity Profilo | Guru

No hai capito bene devo leggere sia la prima data del primo record che l'ultima data dell'ultimo record e poi iniziare a leggere il file dall'inizio alla fine
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

Vinsent Profilo | Senior Member

Forse qualcosa del genere:
Dim lines() As String = IO.File.ReadAllLines(path) Console.WriteLine("numero delle righe: " & lines.Length) Console.WriteLine("testo della prima riga: " & lines(0).ToString) Console.WriteLine("testo dell' ultima riga: " & lines(lines.Length - 1).ToString) ' legge le righe escluse prima e ultima ' per leggere tutto a= 0 e lines.Length - 1 For a = 1 To lines.Length - 2 Step 1 Console.WriteLine(lines(a)) Next

che alla fine è un semplice array....

trinity Profilo | Guru

>Console.WriteLine("testo della prima riga: " & lines(0).ToString)
>Console.WriteLine("testo dell' ultima riga: " & lines(lines.Length >- 1).ToString)

ho provato a fare così ma l'ultima riga non me la legge...vi posto il file txt

calcola che io prendo il file da uno stream che viene passato da un fileupload di ajax ossia cosi:

Dim myFile As HttpPostedFile myFile = FileUpload1.PostedFile Try Using sr As New StreamReader(myFile.InputStream) Do line = sr.ReadLine() If Not (line Is Nothing) Then ............ ............ Loop Until line Is Nothing End Using


ciao

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

Vinsent Profilo | Senior Member

Nel file l' ultima riga è senza caratteri...prova a fargli leggere la penultima.

trinity Profilo | Guru

Ok quindi per far leggere la penultima devo impostare -2

secondo come potrei controllare se l'ultima riga è senza caratteri e di conseguenza mi devo orientare sulla penultima?

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

Vinsent Profilo | Senior Member

Il ciclo parte dall' ultima riga fino ad arrivare alla prima, l' IF verifica che il numero di caratteri (count) tolti gli "spazi" iniziali e finali (trim) della riga esaminata (lines(a)) sia maggiore di zero, se la condizione è rispettata il codice scrive i messaggi descritti ed interrompe il ciclo...altrimenti passa ad esaminare la riga precedente e così via.
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5