Lettura di un file

giovedì 22 dicembre 2005 - 09.23

Klaus-zanini Profilo | Senior Member

Ciao a tutti,
ho il seguente problema: devo leggere le informazioni da un file di testo ed elaborarle come stringa ma se ripeto l'operazione alcune volte trovo che il file è inaccessibile perché già in uso da un altro processo...ma non so quale (credo che sia il mio, ma a questo punto non so cosa devo fare per rilasciare il file...).
Questo sono le chiamate che faccio:
Dim oFile As New System.IO.FileInfo(Indirizzo)
Dim mySR As StreamReader
Try
mySR = File.OpenText(oFile.FullName)
Dim testo As String
testo = mySR.ReadToEnd
testo.Clone()
Return testo
Catch
Return Nothing
End Try

Senza motivi evidenti a volte l'OpenText funziona e a volte no.

Un'altra cosa quello che recupero (il testo) non ha sempre il corretto valore che mi aspetto...ad esempio "è,é,à,ò..." non vengono riportate o riportate con altri valori. Mi sapreste dire che tipo di encoding dovrei utilizzare?

totti240282 Profilo | Guru

attenzione che devi chiudere lo stream cosi

mySR.close
mySR =nothing

per la formattazione devi impostare all'apertura del file la giusta codifica tipo ascii ,ansi ecc...

C'è solo un capitano !!!!!!

Klaus-zanini Profilo | Senior Member

Ora provo a chiudere lo stream come dici tu.

Ma qual'è la giusta decodifica?

Klaus-zanini Profilo | Senior Member

Niente da fare...il problema rimane

Cteniza Profilo | Guru

Prova con:
Dim ISO8859 As System.Text.Encoding = System.Text.Encoding.GetEncoding(1252)
Dim sr As StreamReader = New StreamReader(myFile,ISO8859)
testo = sr.ReadToEnd()
sr.Close()


Klaus-zanini Profilo | Senior Member

Grazie mille tutto funziona ora.

Luciano gentilmente mi spiegheresesti il significato del valore numerico presente nell'encoding che mi hai suggerito?

Cteniza Profilo | Guru

Si tratta del valore del codepage che corrisponde alla nostra zona.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemtextencodingclassgetencodingtopic1.asp


Klaus-zanini Profilo | Senior Member

Luciano, scusa se ti rompo di nuovo ma per caso quando devo scrivere un file devo usare anche in tal caso quell'encoding? Se sì mi fai un esempio? Perché tra i costruttori dello streamwriter non c'è quello che riceve come parametri il file su cui scrivere e l'encoding.

Cteniza Profilo | Guru

Mi sembra proprio (è un eufemismo perchè ne sono proprio sicuro) che, se vuoi i caratteri nazionali come i caratteri accentati, il simbolo dell'euro e altri siano scritti devi proprio usare l'encoding.


Klaus-zanini Profilo | Senior Member

Quindi potrei fare così?

Dim ISO8859 As System.Text.Encoding = System.Text.Encoding.GetEncoding(1252)
Dim MySW As New StreamWriter(New FileStream("C:\Prova.txt", FileMode.CreateNew), ISO8859)
MySW.Write("Pippo è un cane")
MySW.Close()

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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5