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.