foralobo (Normal User)
Pro
Messaggi: 146
Iscritto: 30/11/2009
|
dato questo codice:
Codice sorgente - presumibilmente VB.NET |
Public Sub CambiaOpzione(ByVal key As String, ByVal valore As String) Dim fileSplittato As New List(Of String) 'Dim File As New IO.FileStream(pathFile, IO.FileMode.Open) Dim Reader As New IO.StreamReader(pathFile) 'Mette il file in una lista Do While Not reader.EndOfStream fileSplittato.Add(Reader.ReadLine) Loop Reader.Close() For i As Int16 = 0 To fileSplittato.Count - 1 If fileSplittato(i).IndexOf(key) = 0 Then fileSplittato(i) = String.Format("{0} = {1}", key, valore) End If Next Dim W As New IO.StreamWriter(pathFile) 'il problema sta qui For Each Riga As String In fileSplittato W.WriteLine(Riga) Next W.Close() End Sub
|
mi da errore nella riga dove c'è scritto "il problema sta qui"
genera un'eccezione IOException con questa descrizione:
Il processo non può accedere al file 'C:\Documents and Settings\HP_Proprietario\Desktop\vb net\Ammisistrazione Chiosco\Ammisistrazione Chiosco\bin\Debug\setting\operazioni.opt' perché è in uso da un altro processo.
il file non è utilizzato da niente (credo).
inoltre quando apro il file per la lettura, poi lo kiudo.
sicuramente sarà qualcosa semplice ma che nn riesco a risolvere
grazie
|
|
()
Newbie
Messaggi:
Iscritto:
|
Ho provato il tuo codice, utilizzando un file txt con del testo a caso dentro... a me funziona tutto, nessun errore....
Quindi deduco che il file sia veramente utilizzato da qualche altra parte
|
|
foralobo (Normal User)
Pro
Messaggi: 146
Iscritto: 30/11/2009
|
Postato originariamente da Neo1986:
Ho provato il tuo codice, utilizzando un file txt con del testo a caso dentro... a me funziona tutto, nessun errore....
Quindi deduco che il file sia veramente utilizzato da qualche altra parte |
chiedo scusa...dovevo essere + dettagliato:
la procedura funziona solo che io la uso all'interno di una classe:
pathName è una proprietà che viene impostata quando si crea l'oggetto...e quando la passo alla procedura mi da errore...è come se fosse usato il file da un processo all'interno della classe...nn so quale però se al posto di usare il percorso che metto alla creazione dell'oggetto, uso il percorso di un file esterno, allora funziona...ecco la classe:
Codice sorgente - presumibilmente VB.NET |
CClass Opzioni Public TabellaOpzione As New List(Of Options) Private _pathFile As String Private Property pathFile() As String Get Return _pathFile End Get Set(ByVal value As String) _pathFile = value End Set End Property Public Sub CambiaOpzione(ByVal key As String, ByVal valore As String) Dim fileSplittato As New List(Of String) 'Dim File As New IO.FileStream(pathFile, IO.FileMode.Open) Dim Reader As New IO.StreamReader(pathFile) 'Mette il file in una lista Do While Not reader.EndOfStream fileSplittato.Add(Reader.ReadLine) Loop Reader.Close() For i As Int16 = 0 To fileSplittato.Count - 1 If fileSplittato(i).IndexOf(key) = 0 Then fileSplittato(i) = String.Format("{0} = {1}", key, valore) End If Next Dim Writer As New IO.StreamWriter(pathFile) For Each Riga As String In fileSplittato Writer.WriteLine(Riga) Next Writer.Close() End Sub 'Costruttore Sub New(ByVal fileOpzioni As String) pathFile = "c:\ciao.txt" 'fileOpzioni CreaTabOpzioni() End Sub End Class
|
Ultima modifica effettuata da foralobo il 18/06/2010 alle 12:08 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Ma il programma non è solo in questa classe ... e tutto il resto?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
foralobo (Normal User)
Pro
Messaggi: 146
Iscritto: 30/11/2009
|
Postato originariamente da nessuno:
Ma il programma non è solo in questa classe ... e tutto il resto?
|
se uso la procedura senza usare pathname, funziona... |
|
foralobo (Normal User)
Pro
Messaggi: 146
Iscritto: 30/11/2009
|
nessuno, credo che la tua riposta sia in funzione del fatto che ci possa essere il file aperto...
ed era cosi quindi la tua intuizione era giusta. Aprivo lo stesso file in lettura senza chiuderlo..
Domanda:
In questa procedura lo riapro..è normale che nn mi dia errore?
Domanda 2:
come si vede dalla procedura, il file lo riapro sempre in lettura, lo richiudo però poi quando cerco di riaprirlo in scrittura mi da errore...
Non vede la chiusura?
grazie
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Postato originariamente da foralobo:
nessuno, credo che la tua riposta sia in funzione del fatto che ci possa essere il file aperto...
ed era cosi quindi la tua intuizione era giusta. Aprivo lo stesso file in lettura senza chiuderlo.. |
Ecco perché si deve mostrare *tutto* il codice e non solo quello che si crede sbagliato.
Domanda:
In questa procedura lo riapro..è normale che nn mi dia errore? |
Può anche essere ... un file può essere aperto più volte in lettura.
Domanda 2:
come si vede dalla procedura, il file lo riapro sempre in lettura, lo richiudo però poi quando cerco di riaprirlo in scrittura mi da errore...
Non vede la chiusura?
|
Ma il file era stato aperto *due volte*. L'ultima chiusura vale per la corrispondente apertura, non per *tutte* le aperture.
Se mostri *tutto* il codice in modo che si possa anche compilare ed eseguire, si capirà meglio la situazione.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
foralobo (Normal User)
Pro
Messaggi: 146
Iscritto: 30/11/2009
|
Postato originariamente da nessuno:
Ma il file era stato aperto *due volte*. L'ultima chiusura vale per la corrispondente apertura, non per *tutte* le aperture.
Se mostri *tutto* il codice in modo che si possa anche compilare ed eseguire, si capirà meglio la situazione. |
avevo provato a chiuderlo + volte dove avevo fatto la chiusura delle seconda apertura...evidentemente non andava bene.
grazie tante per i kiarimenti cmq. |
|