2017-09-08 1 views
2

I'am essayant de copier un fichier dans un répertoire, puis de le supprimer, mais File.Delete() revient toujours fauxFile.Delete() retour faux fichier même est inscriptible

Voici mon code:

for (File file : list) { 
      if (!file.isDirectory()) { 
       try { 
        FileUtils.copyFileToDirectory(file, path); 
        file.setWritable(true);       
        System.out.println(file.delete()); 
        if(file.exists()){ 
         file.deleteOnExit(); 
        } 
       } catch (IOException e) { 
        System.out.println(e); 
       } 
      } 
     } 
+2

Notez que vous devez disposer des autorisations appropriées pour que 'file.setWritable (true);' travailler . Votre utilisateur n'a probablement pas les droits pour supprimer le fichier. – BackSlash

+0

Alors, que puis-je faire? –

+2

Exécutez le programme avec un utilisateur qui a le droit de supprimer le fichier – BackSlash

Répondre

1

Quelques idées que vous pouvez résoudre.

  • Si vous souhaitez supprimer le fichier, fermez toutes les connexions et tous les flux. après cela, supprimez le fichier
  • Assurez-vous que vous avez les autorisations de suppression pour le fichier
  • Assurez-vous que vous êtes dans le bon répertoire. Essayez d'utiliser le chemin absolu pour supprimer le fichier, au cas où la suppression ne fonctionnerait pas. Le chemin d'accès peut ne pas être correct pour le fichier.
  • Utilisez Files.delete. La méthode delete (Path) supprime le fichier ou déclenche une exception si la suppression échoue. Par exemple, si le fichier n'existe pas, une exception NoSuchFileException est levée. Vous pouvez prendre l'exception pour déterminer la raison pour laquelle la suppression a échoué comme suit: Voir Oracle docs here

    try { 
        Files.delete(path); 
    } catch (NoSuchFileException x) { 
        System.err.format("%s: no such" + " file or directory%n", path); 
    } catch (DirectoryNotEmptyException x) { 
        System.err.format("%s not empty%n", path); 
    } catch (IOException x) { 
        // File permission problems are caught here. 
        System.err.println(x); 
    }