Poblema scrittura file Testo

mercoledì 25 ottobre 2006 - 17.32

Djdee86 Profilo | Newbie

Buona sera ......
Sono Passato Adesso dal Vb 6 a vb.net.........e mi trovo unpò in difficoltà...........nella scrittura all'interno di un file testo
il codice che uso è:

Friend Function CreateTxt(ByVal Percorso As String, ByVal str() As String) As Boolean
Try
Percorso &= "\" & Format(Now(), "yyyyMMdd") & ".LDV"
If File.Exists(Percorso) = True Then
If MessageBox.Show("Il file " & Percorso & " già esiste, stituire il file esistente con il nuovo file?", "Sovrascrivi File", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
File.Delete(Percorso)
File.Create(Percorso)

End If
Else
File.Create(Percorso)
End If
File.WriteAllLines(Percorso, str)
Return True
Catch ex As Exception
MessageBox.Show(ex.Message, "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
Return False
End Try
End Function

Il Problema è che quando creo il file testo con vado a scrivere con l'istruzione File.WriteAllLines(Percorso, str) mi restituisce un errore del tipo:
"Il processo non può accedere al file 'C:\Documents and Settings\diego\Desktop\20061025.LDV' perché è in uso da un altro processo."

Potete darmi una mano..........

Brainkiller Profilo | Guru

>Il Problema è che quando creo il file testo con vado a scrivere
>con l'istruzione File.WriteAllLines(Percorso, str) mi restituisce
>un errore del tipo:
>"Il processo non può accedere al file 'C:\Documents and Settings\diego\Desktop\20061025.LDV'
>perché è in uso da un altro processo."

Beh il problema qui è semplice. Questo errore capita quando il file è già aperto da un altro processo e tu tenti di scrivergli sopra. Di solito devi usare la sequenza:

- Apri File
- Scrivi o leggi da File
- Chiudi File

Se manca il chiudi file è probabile che resti qualche handle sul file e poi ti resta di fatto "lockato" dal sistema. Quando vai a scrivergli sopra ti esce l'errore che hai indicato.
Quindi verifica di chiudere correttamente i file.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Djdee86 Profilo | Newbie

Ora ho Risolto.........
Ho Trovato due soluzioni al mio problema:
La prima consiste nel togliere l'istruzione file.create.........infatti l'instruzione file.writeline si crea il file su cui scrive se non lo trova

e la seconda consiste nel instanziare un uggetto filestream che creerà il file e poi verrà chiuso

ex.

Dim fs As FileStream
fs = File.Create(Path)
fs.Close()
fs = Nothing
File.WriteAllLines(Path, Str())

Grazie lo stesso per l'aiuto.....
djdee86
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5