Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Cancellazione directori non vuota in modo ricorsivo

    Per cancellare una directory non vuota in modo ricorsivo uso questo metodo:

    codice:
    public boolean deleteFolderError(File pathXML) throws IOException  {          if (!pathXML.isDirectory()) {             throw new IOException("Not a directory " + pathXML);         }          File[] files = pathXML.listFiles();         for (int i = 0; i < files.length; i++) {             File file = files[i];              if (file.isDirectory()) {                 deleteFolderError(file);             } else {                 if ( !file.canWrite()){                     throw new IOException("File protetto da scrittura. Riprovare nuovamente." + file);                 }                 boolean deleted = file.delete();                 if (!deleted) {                     throw new IOException("Unable to delete file" + file);                 }             }     }      return (pathXML.delete());
    Il problema è il seguente, riesco a cancellare tutte le sottodirectory con i relativi file presenti nelle directory, ma quando tento di cancellare l'unico file presente nella dir passata al metodo non cancella.
    Esempio:
    pathXML = "c:\prova"
    in "c:\prova" ci sono un file scartato.xml e una dir prova2 con n sottodir e files.
    Riesco a cancellare tutta la dir prova2, ma quando tento di cancellare il file scartato.xml con
    boolean deleted = file.deleted(); mi restituisce false. Ovviamente il path è giusto.
    La cosa strana è che se tento di cancellare nuovamente il file ci riesco!!
    Come potete vedere dal codice controllo anche se il file è protetto da scrittura.

    Grazie Piccolognu

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    please, posta il codice in maniera leggibile così si fa troppa fatica a capire cosa fai

  3. #3
    codice:
    public boolean deleteFolderError(File pathXML) throws IOException  {          
                      if (!pathXML.isDirectory()) {             
                           throw new IOException("Path non valido: " + pathXML);         
                      }          
                      File[] files = pathXML.listFiles();         
                      for (int i = 0; i < files.length; i++) {             
                          File file = files[i];              
                          if (file.isDirectory()) {                 
                              deleteFolderError(file);             
                          } else {                 
                              if ( !file.canWrite()){                     
                                  throw new IOException("File protetto da scrittura. Riprovare       nuovamente." + file);                 
                             }                 
                          boolean deleted = file.delete();                 
                          if (!deleted) {                     
                               throw new IOException("Impossibile cancellare: " + file);                   
                          }           
                        }     
          }
    Hai perfettamente ragione..scusa :-)

  4. #4
    Risolto.. il problema era che il file in questione lo leggevo e non chiudevo lo stream.

    Piccolognu

  5. #5
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    molto strano in effetti....
    a me sembra corretto

  6. #6
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    cioè? potresti postare il codice corretto?

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.