Sovrascrivere file con eccezione fileNotFoundException

di willi4m il
21 risposte

Ragazzi ho un problema con una sovrascrizione di un file.

Io apro un file .txt tramite un file JFileChooser e poi salvo il file o tramite questa stringa

String nomeFile = "C:/Users/Giank/Desktop/portafoglio.txt";

oppure sempre tramite il JFileChooser. Il risultato è sempre lo stesso: Ovvero "

Impossibile salvare il file it.unibas.persistenza.DAOException: java.io.FileNotFoundException: C:/Users/Giank/Desktop/portafoglio.txt (accesso negato)

Se, mentre il programma è in esecuzione, cancello a mano il file portafoglio.txt, quando salvo il file lo fa tranquillamente, mentre se carico il file e poi salvo, come se lo volessi sovrascrivere, mi da quell'errore. Nel file ci sono i permessi di scrittura.

Se carico il pogramma tramite netbeans funziona tranquillamente, se creo il file jar e lo faccio partire mi da quell'errore.

Non so cosa puo essere.

21 Risposte

  • Se puo servire il programma sta un una cartella in c:\ e lo apro tramite file bat (java -jar ) da un collegamento sul desktop

  • 30/09/2023 - sihsandrea ha scritto:


    30/09/2023 - willi4m ha scritto:


    Se puo servire il programma sta un una cartella in c:\ e lo apro tramite file bat (java -jar ) da un collegamento sul desktop

    sta in una cartella su c e vuoi sovrascrivere il collegamento sul desktop??

    https://it.wikipedia.org/wiki/Collegamento_(file)#:~:text=In%20informatica%2C%20nell'ambito%20dei,un%20nome%20diverso%20dall'originale.

    Mi sono espresso male, il collegamento al file .Bat  he si trova nella cartella del jar è sul desktop. Ma ho visto anche se metto il txt nella cartella del file jar cmq mi dà quella eccezione. La cosa strana è che se faccio partire il programma da net beans funziona regolarmente, sovrascrive il file txt senza problemi.

  • 29/09/2023 - willi4m ha scritto:


    Io apro un file .txt tramite un file JFileChooser e poi salvo il file o tramite questa stringa […]

    Il JFileChooser ti consente di selezionare un file restituendoti il percorso, ma qual è il codice che usi per scrivere poi il file?

    Posta anche la parte di codice mancante, dalla selezione alla scrittura, perché molto probabilmente l'errore è in quella parte.

  • 30/09/2023 - Alka ha scritto:


    29/09/2023 - willi4m ha scritto:


    Io apro un file .txt tramite un file JFileChooser e poi salvo il file o tramite questa stringa […]

    Il JFileChooser ti consente di selezionare un file restituendoti il percorso, ma qual è il codice che usi per scrivere poi il file?

    Posta anche la parte di codice mancante, dalla selezione alla scrittura, perché molto probabilmente l'errore è in quella parte.

    Interviene il filtro sicurezza se metto tutto il codice..l ho formattato con il 4 pulsante 

  • 30/09/2023 - Alka ha scritto:


    29/09/2023 - willi4m ha scritto:


    Io apro un file .txt tramite un file JFileChooser e poi salvo il file o tramite questa stringa […]

    Il JFileChooser ti consente di selezionare un file restituendoti il percorso, ma qual è il codice che usi per scrivere poi il file?

    Posta anche la parte di codice mancante, dalla selezione alla scrittura, perché molto probabilmente l'errore è in quella parte.

    provo a farlo poco alla volta

    public void actionPerformed(java.awt.event.ActionEvent e) {
    
           Portafoglio porta = (Portafoglio) this.controllo.getModello().getBean(Costanti.PORTAFOGLIO);
           
    
    
           String nomeFile = acquisisciFile();
    
           if (nomeFile != null) {
               try {
    
                   DAOCarica.salvaOperazioni(porta, nomeFile);
    
    
             
                   this.controllo.getVista().finestraInfo(info + "Salvato come: \n" + nomeFile, "Info");
               } catch (DAOException daoe) {
                   this.controllo.getVista().finestraErrore("Impossibile salvare il file " + daoe, "ERRORE" + "\n" + nomeFile);
               }
           }
       }
     
  • 30/09/2023 - willi4m ha scritto:


    Interviene il filtro sicurezza se metto tutto il codice..l ho formattato con il 4 pulsante 

    Non devi pubblicare tutto il codice, ma quello significativo, ossia quello che è utile vedere a partire dalla riga nella quale si verifica l'eccezione.

  • Ok allora qui :)

    grazie cmq!

    if (nomeFile != null) {
                try {
                    String info = "";
    
                    DAOCarica.salvaOperazioni(porta, nomeFile);
                    
                    this.controllo.getVista().finestraInfo(info + "Salvato come: \n" + nomeFile, "Info");
                } catch (DAOException daoe) {
                    this.controllo.getVista().finestraErrore("Impossibile salvare il file " + daoe, "ERRORE" + "\n" + nomeFile);
                }
            }
  • 30/09/2023 - willi4m ha scritto:


    Ok allora qui :)

    No, non è probabilmente quello il punto in cui si verifica l'errore, visto che stai passando il nome del file a un metodo che si chiama DAOCarica.salvaOperazioni.

    Dal nome, direi che si tratta di una classe/metodo che hai scritto tu, e che usa il percorso del file in qualche modo, quindi è in quel metodo che si verifica l'errore, e non nel metodo che passa quel valore.

    Devi partire dal punto più “interno” delle chiamate nelle quali il parametro viene usato, non da quello più esterno.

  • In pratica qual è il codice di salvaOperazioni ?

    E' anche strano che passi un parametro denominato porta e quella stringa info del tutto inutile.

  • 02/10/2023 - oregon ha scritto:


    E' anche strano che passi un parametro denominato porta e quella stringa info del tutto inutile.

    L'avevo trascurata per non creare ulteriori digressioni nella verifica, ma mi associo totalmente.

    Nella programmazione vale un po' lo stesso principio della cucina: quando c'è confusione sul tavolo, così come nel codice, vuol dire che le idee non sono chiare e il risultato finale non potrà essere qualcosa di funzionante (se parliamo di codice) o commestibile (se parliamo di cibo). :)

  • 02/10/2023 - oregon ha scritto:


    In pratica qual è il codice di salvaOperazioni ?

    E' anche strano che passi un parametro denominato porta e quella stringa info del tutto inutile.

    mi blocca il forum su quella parte… capisce che è sbagliata forse :) 

    ho diviso in 2 il codice perchè non me lo fa incollare intero, questa è la parte finale e prima parte è sopra,

    cmq “info” è il titolo del messaggio che mi compare e porta mi serve successivamente

           
           } catch (IOException ioe) {
               throw new DAOException(ioe);
           } finally {
               if (flusso != null) {
                   flusso.close();
               }
           }
    
       }
Devi accedere o registrarti per scrivere nel forum
21 risposte