Scrittura e aggiornamento su file TXT - C#

di il
23 risposte

Scrittura e aggiornamento su file TXT - C#

Salve a tutti,
ho un problema che non riesco a comprendere e ovviamente a risolvere.

In pratica ho un file di testo .txt e devo aggiungerci del testo. Ok sembra facile e infatti mi funziona perfettamente; il problema però che funziona solo con un file.

Mi spiego meglio, sto sviluppando un'applicazione in C# e nell'applicazione ho creato un file log.cs dove in pratica ho il seguente codice :

	
	private static string pathFileLOG = Path.Combine(Environment.CurrentDirectory, @"log\", "log.txt");
	private static StreamWriter fileLogWriter;
	
	//Funzione di generazione File di Log
        public static void AggiornaLog(string operazione)
        {
            try
            {
                using (fileLogWriter = File.AppendText(pathFileLOG))
                {
                    fileLogWriter.WriteLine(DateTime.Now.ToString() + " : " + operazione);
                }
            }
            catch (Exception e)
            {
            }

        }
Questo funziona perfettamente, infatti se apro il file questo è corretto, mentre ho un'altro file, di una classe differente, dove devo memorizzare delle operazioni, ma questo ogni volta mi cancella i dati precedenti, ogni volta che chiudo e riapro l'applicazione.

Di seguito il codice dell'altra classe :

/Variabile per la gestione dell'inserimento da offline
        private static string patchFileOffline = Path.Combine(Environment.CurrentDirectory, @"offline\", "OperazioneOffLine.txt");
        private static StreamWriter fileOffLineWriter;
        
        //Funzione che salva i dati dell'operazione conclusa in un file di testo
        public static void NuovaOperazioneOffLine(string codiceFiscaleUtente, int quantitaMaterialeInserito, char bocchetta)
        {
            Log.AggiornaLog("Nuova operazione offline");
            //Recupero la Data e Ora attuale
            string dataOraString = DateTime.Now.ToString("yyyy-MM-dd H:mm:ss");

            int idMaterialeTmp = 0;

            //Recupero l'Id del materiale
            switch (Impostazioni.tipo)
            {...}

            try
            {
                /*File.AppendAllLines(patchFileOffline, new string[]
                {
                     "NUOVA OPERAZIONE",
                     "Data Inserimento=" + dataOraString + ";",
                     "Codice Fiscale Utente=" + codiceFiscaleUtente + ";",
                     "Numero Tessera=" + CodiceFiscale.IdentificativoTessera + ";",
                     "Identificativo Macchina;" + Impostazioni.idMacchina + ";",
                     "Identificativo Materiale=" + idMaterialeTmp + ";",
                     "Quantita Inserita=" + quantitaMaterialeInserito + ";",
                     "---"
                });*/

                using (fileOffLineWriter = File.AppendText(patchFileOffline))
                {
                    fileOffLineWriter.WriteLine("NUOVA OPERAZIONE");
                    fileOffLineWriter.WriteLine("Data Inserimento=" + dataOraString + ";");
                    fileOffLineWriter.WriteLine("Codice Fiscale Utente=" + codiceFiscaleUtente + ";");
                    fileOffLineWriter.WriteLine("Numero Tessera=" + CodiceFiscale.IdentificativoTessera + ";");
                    fileOffLineWriter.WriteLine("Identificativo Macchina;" + Impostazioni.idMacchina + ";");
                    fileOffLineWriter.WriteLine("Identificativo Materiale=" + idMaterialeTmp + ";");
                    fileOffLineWriter.WriteLine("Quantita Inserita=" + quantitaMaterialeInserito + ";");
                    fileOffLineWriter.WriteLine("---");
                }

                Log.AggiornaLog("Creato log operazione offline");
            }
            catch (Exception e)
            {
                Log.AggiornaLog("Errore nella memorizzazione dati offline : " + e);
            }

        }

Ho provato diverse soluzioni, sbirciando qua e in la nel web, però ogni volta che avvio il programma il file si resetta.

Dove sbaglio?!?

Grazie a tutti quelli che sapranno aiutare perché proprio non ne vengo a capo!!

23 Risposte

  • Re: Scrittura e aggiornamento su file TXT - C#

    Ciao

    Hai provato ad usare una directory fissa? Non so, per esempio C:\Temp\AppendTest ?

    Lo chiedo perchè, usando una sottodirectory della bin, non vorrei che Visual Studio cancelli e ricrei tale directory tutte le volte, cancellando quindi il file precedente
  • Re: Scrittura e aggiornamento su file TXT - C#

    Ciao,

    Grazie della risposta. Sinceramente non ho provato anche perché con gli altri file funziona. Ho due file di log, uno generale e uno relativo alla gestione del database e entrambi sono nella sottodirectory di bin e funzionano correttamente.

    Non capisco proprio il problema...
  • Re: Scrittura e aggiornamento su file TXT - C#

    Fabs84 ha scritto:


    Grazie della risposta. Sinceramente non ho provato anche perché con gli altri file funziona. Ho due file di log, uno generale e uno relativo alla gestione del database e entrambi sono nella sottodirectory di bin e funzionano correttamente.
    Ci sarà senz'altro da qualche parte una istruzione che provvede a riscrivere il file: cerca tutte le occorrenze del percorso del file di testo che viene riscritto all'interno del tuo codice, oppure esegui passo per passo il programma per verificare il comportamento sul file.

    Ciao!
  • Re: Scrittura e aggiornamento su file TXT - C#

    Segui il consiglio di Alka


    P.S. non è importante ma il nome della variabile deve iniziare con path non patch ...
  • Re: Scrittura e aggiornamento su file TXT - C#

    Errore di battitura. Infatti sopra scrivo path e sotto patch..

    Per rispondere ad Alka, purtoppo la classe che gestisce quel file ha solo quel metodo, quindi impossibile che vada a riscrivere il file in altre parti. Utilizzo la stessa sintassi e due classi praticamente identiche. Una, quella dei log, funziona perfettamente, l'altra no.

    Nelle impostazioni del file avevo messo : sostituire se più recente. Ho provato anche con non caricare, ma ho sempre lo stesso difetto, considerando che nel file log ho impostato sostituire se più recente.
  • Re: Scrittura e aggiornamento su file TXT - C#

    Quali impostazioni??
  • Re: Scrittura e aggiornamento su file TXT - C#

    Su visual studio nel progetto ho creato le varie cartelle, contenenti i vari file, xml, immagini e per l'appunto la cartella log, contentente i due file di log e la cartella offline, contente il file txt, cliccando sul file nelle proprietà ho quanto detto Pina, non caricare, carica sempre e carica se più recente.
    Spero di essermi spiegato bene.
  • Re: Scrittura e aggiornamento su file TXT - C#

    Se avete altre idee di come scrivere o meglio aggiungere righe su un file di testo sono aperto ad altri tipi di implementazioni!!
  • Re: Scrittura e aggiornamento su file TXT - C#

    Fabs84 ha scritto:


    Su visual studio nel progetto ho creato le varie cartelle, contenenti i vari file, xml, immagini e per l'appunto la cartella log, contentente i due file di log e la cartella offline, contente il file txt, cliccando sul file nelle proprietà ho quanto detto Pina, non caricare, carica sempre e carica se più recente.
    Metti uno screenshot, perché non capisco a quali opzioni stai facendo riferimento.
  • Re: Scrittura e aggiornamento su file TXT - C#

    Fabs84 ha scritto:


    Se avete altre idee di come scrivere o meglio aggiungere righe su un file di testo sono aperto ad altri tipi di implementazioni!!
    L'impostazione è corretta ma, come già detto, sicuramente c'è da qualche parte un "effetto collaterale" dovuto a una cancellazione involontaria, o qualcosa del genere.

    Ad esempio, non è chiaro perché i suddetti file di log debbano fare parte del tuo progetto, e quali opzioni tu abbia configurato per gli stessi (non ci sono opzioni, solo il codice da scrivere).

    Fornisci i dettagli mancanti, oppure rimuovi i file dal progetto e scrivi in percorsi che non abbiano a che vedere con il programma (es. una sottocartella del progetto stesso e così via), ma eventualmente all'interno della cartella "Documenti" dell'utente corrente.
  • Re: Scrittura e aggiornamento su file TXT - C#

    Alka ha scritto:


    Fabs84 ha scritto:


    Su visual studio nel progetto ho creato le varie cartelle, contenenti i vari file, xml, immagini e per l'appunto la cartella log, contentente i due file di log e la cartella offline, contente il file txt, cliccando sul file nelle proprietà ho quanto detto Pina, non caricare, carica sempre e carica se più recente.


    Metti uno screenshot, perché non capisco a quali opzioni stai facendo riferimento.
    Idem... non dovresti caricare i file di log nel progetto... non capisco che fai
  • Re: Scrittura e aggiornamento su file TXT - C#

    Per semplicità, forse. Non sono un programmatore espertissimo diciamo che mi piace e mi ci diverto. Sicuramente alcune cose andranno fatte in maniera differente e di certo migliore, però per comodità avere tutti i file a portata di mano non mi dispiace invece di avere file qua e in là tra le varie cartelle.

    Ripeto non ci sono chiamate strane o problemi collaterali, almeno credo. Ad ogni operazione chiamo il metodo e faccio la scrittura sul file. Se non riavvio il software, in debug almeno, mi cancella tutti i dati presenti all'interno. Considerando che il metodo di aggiornamento viene chinato una volta ogni tanto, mentre per i file di log ogni volta perché voglio registrare qualsiasi operazione fatta, per evitare appunto problemi indesiderati e una maggior tutela mia se il programma non va, magari per colpa dell'utente che sbaglia.
  • Re: Scrittura e aggiornamento su file TXT - C#

    Fabs84 ha scritto:


    Ripeto non ci sono chiamate strane o problemi collaterali
    Niente, allora è il computer che sbaglia, non c'è altra spiegazione.

    Fabs84 ha scritto:


    Ad ogni operazione chiamo il metodo e faccio la scrittura sul file. [...]
    Questo lo stai dicendo già dall'inizio, e probabilmente non è la causa, ma per provare a scovarla ti sono già state poste parecchie domande e chieste svariate informazioni, che tu continui a non riportare.

    A questo punto, almeno per me, è inutile continuare a insistere.

    Siccome hai fatto tutto giusto, cambia il computer: quello che hai evidentemente preferisce fare di testa sua non seguendo il codice che hai scritto. Che altro ti si può dire?
  • Re: Scrittura e aggiornamento su file TXT - C#

    L'unica cosa che puoi fare è creare un progetto di test simile con il minimo codice utile vedere se il problema si presenta. E in quel caso lo zippi e lo fai scaricare
Devi accedere o registrarti per scrivere nel forum
23 risposte