Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160

    Eliminazione di una directory che contiene sottodirectory

    In un'applicazione desktop devo eliminare un profilo utente e di conseguenza la sua cartella presente sul file system che contiene il file di properties e due file xml.

    Ho implementato questo metodo:

    codice:
    public boolean deleteProfile(File path) {
                if( path.exists() ) {
                  File[] files = path.listFiles();
                  for(int i=0; i<files.length; i++) {
                     if(files[i].isDirectory()) {
                       deleteProfile(files[i]);
                     }
                     else {
                       files[i].delete();
                     }
                  }
                }
                return path.delete();
             }
    Alla fine però mi restituisce sempre false, quindi non funziona.
    C'è qualcosa di sbagliato in questo codice?

    Ho letto che a volte il metodo delete() non funziona perchè ci sono dei riferimenti all'oggetto che si intende eliminare, occorrebbe quindi forzare il garbage collector. E' vera questa cosa?
    Perchè ho cmq provato così, ma non funziona uguale.



  2. #2
    Utente di HTML.it L'avatar di Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160
    Come prima riga del metodo sopra, ho aggiunto quella per forzare il GarbageCollector

    codice:
    System.gc();
    E adesso il metodo in questione a volte funzione e altre volte no.
    Può essere che cmq non funzioni sempre la forzatura sul GarbageCollector?

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Eliminazione di una directory che contiene sottodirectory

    Originariamente inviato da Cool81
    C'è qualcosa di sbagliato in questo codice?
    A vista mi sembra di no. Si potrebbe migliorare ma concettualmente mi pare ok.

    Originariamente inviato da Cool81
    Ho letto che a volte il metodo delete() non funziona perchè ci sono dei riferimenti all'oggetto che si intende eliminare, occorrebbe quindi forzare il garbage collector. E' vera questa cosa?
    No assolutamente, il "gc" non centra.

    Affinché una directory sia eliminata (e delete() ritorni true) è necessario che sia vuota (lo dice bene il javadoc).
    Quindi sei sicuro che viene cancellato tutto? Non è che per caso ci sono file:
    a) lockati in uso da altre applicazioni
    b) di proprietà di altri utenti o con altri permessi che non ne permettono l'accesso
    Perché in tal caso non li cancella e ritorna false.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it L'avatar di Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160
    La directory contiene dei file inerenti solo a quel profilo: un file d properties e due file xml.

    La cosa che non capisco è perchè se eseguo l'applicazione non funziona mentre se faccio il debug, funziona cioè elimina la directory e le relative sottodirectory.

    Una spiegazione?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.