Sovrascrivere file con eccezione fileNotFoundException

di il
21 risposte

21 Risposte - Pagina 2

  • Re: Sovrascrivere file con eccezione fileNotFoundException

    Quale parte sopra?

  • Re: Sovrascrivere file con eccezione fileNotFoundException

    02/10/2023 - oregon ha scritto:


    Quale parte sopra?

    scusami se metto l immagine ma non riesco in un nessun modo a postare il codice

  • Re: Sovrascrivere file con eccezione fileNotFoundException

    Tanto per cominciare aggiungi come prima riga

    import java.io.*;

    e togli tutti i java.io

  • Re: Sovrascrivere file con eccezione fileNotFoundException

    Osservando il codice, credo che ci siano poche alternative: o vi sono situazioni in cui arrivi al momento della scrittura con un percorso che non è corretto (es. fa riferimento a una directory inesistente), magari perché il percorso è relativo e dipende da dove lanci il programma, oppure in caso contrario il file esiste già e magari è aperto da qualche parte, o nel programma stesso (es. se non chiudi qualche “writer” altrove nel codice) o da un eventuale tool che usi per visualizzarlo (es. Notepad o altro).

    In breve, il file dovresti scriverlo: se non riesci è perché il file è errato, oppure perché già esistente e aperto altrove, dallo stesso programma o da un altro.

  • Re: Sovrascrivere file con eccezione fileNotFoundException

    Alcune considerazioni.

    1. Il codice non te lo fa postare perchè al suo interno c'è scritto File Writer (tutto attaccato) e al forum sta cosa non piace (ho già aperto un ticket con l'amministratore per sta cosa e credo ci stiano ancora lavorando)
    2. La gestione dei writer andrebbe migliorata (vedi codice più sotto)
    3. Fatti stampare il percorso e avvia l'applicazione da riga di comando, così da vedere cosa gli arriva

    -

    Questo è il codice per la gestione corretta dei writer (ho messo il carattere di sottolineatura proprio per il problema del forum):

    File_Writer fw = null;
    Print_Writer pw = null;
    try {
       fw = new File_Writer(nomeFile);
       pw = new Print_Writer( fw );
       ...
       pw.flush();
    } catch (Exception e) {
       throw new DAOException(e);
    } finally {
       if (pw != null) {
          try { pw.close(); } catch (Exception e) { }
       } else {
          if (fw != null) {
             try { fw.close(); } catch (Exception e) { }
          }
       }
    }

    Non è sufficiente chiudere il Print Writer: se per una qualche ragione assurda il File Writer è stato creato, ma il Print Writer no avrai un oggetto che non è stato chiuso.

    Questo è ciò che dovresti aggiungere per farti stampare il percorso:

    public static void salvaOperazioni(Portafoglio portaf, String nomeFile) throws DAOException {
       System.out.println("Percorso arrivato: " + nomeFile);
       ...   // Resto del codice
    }

    In questo modo, avviando il programma da console, hai a video il percorso che arriva a quel metodo.

    A me rimane da capire una cosa, rispetto al tuo primo post: da qualche parte vai a leggere il file se esiste? Se è così, puoi postare anche la parte di codice della lettura? Perchè potrebbe esserci potenzialmente un problema anche lì.

    Ciao.

  • Re: Sovrascrivere file con eccezione fileNotFoundException

    03/10/2023 - SpiritoLibero ha scritto:


    Alcune considerazioni.

    1. Il codice non te lo fa postare perchè al suo interno c'è scritto File Writer (tutto attaccato) e al forum sta cosa non piace (ho già aperto un ticket con l'amministratore per sta cosa e credo ci stiano ancora lavorando)
    2. La gestione dei writer andrebbe migliorata (vedi codice più sotto)
    3. Fatti stampare il percorso e avvia l'applicazione da riga di comando, così da vedere cosa gli arriva

    -

    Questo è il codice per la gestione corretta dei writer (ho messo il carattere di sottolineatura proprio per il problema del forum):

    File_Writer fw = null;
    Print_Writer pw = null;
    try {
       fw = new File_Writer(nomeFile);
       pw = new Print_Writer( fw );
       ...
       pw.flush();
    } catch (Exception e) {
       throw new DAOException(e);
    } finally {
       if (pw != null) {
          try { pw.close(); } catch (Exception e) { }
       } else {
          if (fw != null) {
             try { fw.close(); } catch (Exception e) { }
          }
       }
    }

    Non è sufficiente chiudere il Print Writer: se per una qualche ragione assurda il File Writer è stato creato, ma il Print Writer no avrai un oggetto che non è stato chiuso.

    Questo è ciò che dovresti aggiungere per farti stampare il percorso:

    public static void salvaOperazioni(Portafoglio portaf, String nomeFile) throws DAOException {
       System.out.println("Percorso arrivato: " + nomeFile);
       ...   // Resto del codice
    }

    In questo modo, avviando il programma da console, hai a video il percorso che arriva a quel metodo.

    A me rimane da capire una cosa, rispetto al tuo primo post: da qualche parte vai a leggere il file se esiste? Se è così, puoi postare anche la parte di codice della lettura? Perchè potrebbe esserci potenzialmente un problema anche lì.

    Ciao.

    Ciao,

    grazie del messaggio innanzittuto. 

    Si ho fatto delle prove per verificare se il percorso è corretto e risultava corretto.

    Ma la cosa che mi sembrava strana era che fino al rilascio precedente andava tutto ok e il codice del salvataggio non era stato toccato, avevo modificato delle cose ma non quella classe.

    Alla fine ho capito che se era in uso Netbeans, non so per quale motivo (forse chiudevo l'applicazione in modo errato, dalla x e non da “esci”) non mi faveva sovrascrivere il file che avevo. Infatti riavviando e aprendo il programma per primo funziona tutto regolarmente.

    Personalmente, questo codice, scritto sicuramente con i piedi, è frutto di un esperienza che ho fatto studiando “a casa” e di quale nozione all'università una 15 di anni fa…  Non ho potuto finire l'università aihmè e tutti i suoi esami….

  • Re: Sovrascrivere file con eccezione fileNotFoundException

    03/10/2023 - Alka ha scritto:


    Osservando il codice, credo che ci siano poche alternative: o vi sono situazioni in cui arrivi al momento della scrittura con un percorso che non è corretto (es. fa riferimento a una directory inesistente), magari perché il percorso è relativo e dipende da dove lanci il programma, oppure in caso contrario il file esiste già e magari è aperto da qualche parte, o nel programma stesso (es. se non chiudi qualche “writer” altrove nel codice) o da un eventuale tool che usi per visualizzarlo (es. Notepad o altro).

    In breve, il file dovresti scriverlo: se non riesci è perché il file è errato, oppure perché già esistente e aperto altrove, dallo stesso programma o da un altro.

    hai ragione! non so per quale motivo, ma se apriva netbeans non mi faveva sovrascrivere il file.. forse chiudevo male i vari run che favevo per prova.. il file era corretto e il percorso pure..

    grazie cmq!

Devi accedere o registrarti per scrivere nel forum
21 risposte