Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Codice per lettura byte di un file txt
giovedì 26 gennaio 2006 - 10.57
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
gio 26 gen 2006 - 10:57
ragazzi io ho scritto questo codice solo che l'avanzamento della progressbar non funziona correttamente e poi il contenuto del file txt non viene letto correttamente:
Dim fs As Stream = File.OpenRead(Me.Label7.Text)
Dim sr As StreamReader = New StreamReader(fs)
'ottengo le dimensioni del file che viene letto
Dim long_file As Int32 = fs.Length
Const BufferSize As Integer = 1024
Dim buffer(BufferSize - 1) As Byte
Me.ProgressBar1.Minimum = 0 : Me.ProgressBar1.Maximum = long_file
Try
Dim line As String
Do
line = sr.ReadLine()
If line = "" Then
Exit Do
End If
Me.ListBox1.Items.Add(line)
Dim linebyte As Int32 = fs.Read(buffer, 0, buffer.Length)
ProgressBar1.Value += linebyte
Loop
Catch
MsgBox(Err.Description)
End Try
fs.Close()
sr.Close()
Me.ProgressBar1.Value = 0
System.Windows.Forms.Application.DoEvents()
Mi potete dire dove sbaglio e se comunque c'è un metodo migliore??
mi sono dimenticato di dire che in sostanza io ho un file txt, riesco a sapere la dimensione in byte del flusso utilizzando la proprietà fs(FileStream).Length al suo interno vi sono una serie di stringhe del tipo:
1,rossi mario,Roma
2,verdi mario,Napoli
3,rossi mario,Roma
4,verdi mario,Napoli
5,rossi mario,Roma
6,verdi mario,Napoli
7,rossi mario,Roma
8,verdi mario,Napoli
io devo leggere da primo all'ultimo di questi record, solo che vorrei avere una progressbar che avanzi mentre legge tutti i record..
con il seguente metodo:
dim Line as String
Line=sr.ReadLine
Dim bytecount() As Byte= Encoding.Default.GetByteS(line)
dim nbyte as Integer= bytecount.lenght
riesco a sapere il valore in byte di ogni stringa ma all'interno del flusso che ovviamente sarà diverso dal valore della dimensione che occupano sul disco...quindi impostando il valore Maximum della progressbar = fs(FileStream).Length e il valore di Value della progressbar = nbyte non funziona perchè l'avanzamento del Progressbar non è coerente visto che il valore di nbyte non è quello reale su disco..
Come posso fare?
Ciao
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
gio 26 gen 2006 - 14:21
>Come posso fare?
L'unica cosa che mi viene in mente per ora, è fare un ciclo sul file una prima volta, e contando le linee con la ReadLine.
Se esce che sono 3530 linee imposti il Max Value della progressbar a 3530 e poi ricominci con la lettura vera e propria, incrementando per ogni chiamata di ReadLine() la progressbar value di 1.
ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
Torna su
Stanze Forum
Elenco Threads
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 !