Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Problema modifica file di testo
Forum - C# / VB.NET - Problema modifica file di testo

Avatar
Sparvier0 (Normal User)
Newbie


Messaggi: 19
Iscritto: 25/02/2011

Segnala al moderatore
Postato alle 2:54
Martedì, 19/04/2011
Salve,

ho la necessità di aggiungere delle stringhe di testo ad un file.txt. Per farlo utilizzo due flussi StreamWriter, e il secondo mi sovrascrive sempre ciò che il primo ha salvato.
Documentandomi ho visto che devo passare per un file temporaneo, ho provato un pò ma non mi riesce. Sapreste indicarmi una via per risolvere tale problema?

Grazie


Edit -

Ho provato a condividere StreamWriter sw ponendolo in una classe statica dove tengo le variabili dei vari form (parametri utili per il programma) . Ho dovuto però non chiudere lo StreamWriter dopo la scrittura nel primo form e nel secondo per poi chiuderlo nel terzo form, dopo che l'utente ha finito di inserire i dati, questo può darmi problemi?

Mi scuso per aver editato e non aver utilizzato l'apposito metodo aggiungi commento, ma non ci stavo..;)

Ultima modifica effettuata da Sparvier0 il 19/04/2011 alle 13:48
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Up
1
Down
V
Segnala al moderatore
Postato alle 9:48
Martedì, 19/04/2011

siccome l'output degli streamwriter è bufferizzato è normale che ti succeda questo, in quanto l'effettiva scrittura dei dati avviene solo a blocchi e generalmente (per piccole quantità di dati) solo alla chiusura del file (o alla chiamata di flush).

per ovviare al tuo problema semplicemente ti consiglio di condividere lo stesso streamwriter tra i due frammenti di codice che intendono scrivere sul file. Sarebbe anche furbo fare una cosa di questo genere:

Codice sorgente - presumibilmente C# / VB.NET

  1. lock (writer) {
  2.     writer.WriteLine("Ciao a tutti");
  3. }



(in entrambi i frammenti di codice)

in questo modo l'accesso all'oggetto StreamWriter viene correttamente serializzato nel caso di operazioni crossthread :)


Ingegnere Informatico
https://ldlagency.it
PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
0
Down
V
Segnala al moderatore
Postato alle 13:02
Martedì, 19/04/2011
Se devi aggiungere alla fine di un file di testo del testo ti consiglio di utilizzare IO.File.AppendText
Molto semplice e pratico :yup:

PM