Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [c#] StreamWriter: chiarimenti

    Salve...

    non riesco proprio a raccapezzarmi con l'uso degli streamwriter.

    Devo creare un file di log che mi tracci ogni operazione effettuata dalla mia applicazioncina Console [c#].

    Dichiarazione:
    Filestream fs_log = null;
    StreamWriter sw = null;

    Indico la stringa che rappresenta il percorso del file di log:
    string logFile = ConfigurationManager.AppSettings["log"] + "log.txt";

    All'interno dell'applicazione, poi, istanzio i 2 stream:
    fs_log = new FileStream(logFile, FileMode.Create, FileAccess.ReadWrite);
    sw = new StreamWriter(fs_log);
    sw.AutoFlush = true;

    Fin qui non credo di commettere errori. Dato che devo scrivere periodicamente su questo file di log, in modo da tener traccia di ogni operazione compiuta dalla mia applicazione, ogni volta che compio la scrittura uso questa sintassi:
    (ricorrente):

    using(fs_log)
    {
    sw.WriteLine("Operazione X effettuata");
    sw.Dispose();
    }

    Tale scrittura avviene più volta nel programma (ma comunque cambiano le modalità, quindi non posso implementare una subroutine) quindi spesso uso questa sintassi.

    Ebbene, nel file di log mi viene scritta solo l'ultima operazione effettuta...come se sovrascrivesse ogni volta il file...

    Qualcuno mi può aiutare???
    PS: A fine programma uso anche il close ed il dipose sullo streamwriter, ma non so quanto possa esser utile...

    Grazie a tutti!

    EDIT: congiuntivi!

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    perchè disponi il writer ogni volta? al massimo lo chiudi..

    ti consiglio di evitare di chiuderlo e magari fare tu stesso il flush e non mettere autoflush..

  3. #3
    Non ti seguo...

    puoi spiegarti meglio?

  4. #4
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    usando:

    codice:
    using(fs_log)
    {
    sw.WriteLine("Operazione X effettuata");
    sw.Dispose();
    }
    tu utilizzi sempre lo stesso streamWriter per scrivere.. ma ogni volta lo distruggi (con il dispose) e distruggi pure il Filestream (con l'using)..

    un consiglio:

    utilizza solo lo streamWriter(path, true) e il suo metodo WriteLine(string) creando il file di log all'inizio del programma utilizzando la classe statica File e il metodo create(string)

  5. #5
    Ho risolto usando il TextWriter e poi il File.Append.

    Grazie mille!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.