Erreur de suppression de fichiers en java

Fermé
fichiersJava - 7 juil. 2011 à 03:21
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 8 juil. 2011 à 07:29
Bonjour,
Je voudrais en réalité transferrer des fichiers dans un autre repertoire en java mais je n'y arrive pas avec le code suivant pour quelques fichiers. J'ignore la raison.

public void transferrerFichier() {

try{
// Le fichier est transférré avec le nom du fichier original
File input = new File(cheminRepertoire+nomFichier);
FileInputStream fis = new FileInputStream(input);
BufferedInputStream in = new BufferedInputStream(fis);
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(cheminRepertoireDestination+nomFichier)));
int c;
while (( c = in.read ()) != - 1 )
out.write ( c ) ;

fis.close();
in.close () ;
out.close () ;
// Vérifier que les propriétés du fichiers permettent son écriture, renvoyer ses propriétés et supprimer le fichier
System.out.println("Nom du fichier à supprimé "+input.getName());
Boolean efface = input.delete();
System.out.println("Valeur de efface : "+efface);

} catch(Exception e){
System.out.println(e.toString());
}
}


La copie des fichiers dans l'autre répertoire est faite mais le input.delete() me retourne FALSE et finalement je n'arrive donc pas à supprimer les fichiers à la source.


PLEASE Help!!!! merci

A voir également:

1 réponse

KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
7 juil. 2011 à 03:30
Utilises la méthode File.renameTo(File) tu gagneras du temps ;-)

new File("C:\\Test.txt").renameTo(new File("D:\\Test.txt"));
0
Ok KX j'éssaies tout de suite et je te fais part du résultat
0
Voici les instructions que j'ai faites:

Boolean transfert = new File(cheminRepertoire+nomFichier).renameTo(new File(cheminRepertoireDestination+nomFichier));
System.out.println("Valeur de transfert des fichiers : "+transfert);

Malheureusement çà ne fonctionne pas et j'ai une valeur FALSE de transfert qui est retournée pour tous les fichiers. Aucun fichier n'a été déplacé
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
Modifié par KX le 7/07/2011 à 04:12
Quelles sont les valeurs des chaînes de caractères, comment les obtiens-tu ?
Tu as peut-être simplement oublié le File.separator (l'antislash sous Windows).

new File(rep1+File.separator+nom).renameTo(new File(rep2+File.separator+nom));
Si ça ne marche pas, explique moi ton "but ultime", ce que tu veux faire au final, c'est le transfert d'un dossier complet ? Une des principales raisons qui peut faire que ça ne marche pas c'est qu'il existe déjà un fichier de même nom dans le répertoire de destination, tu dois explicitement l'effacer s'il existe avant de faire le déplacement.

File dest; 
if (dest.exists()) 
    dest.delete();
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
7 juil. 2011 à 04:38
Si tu as des restrictions sur l'accès des fichiers genre "Fichier en lecture seule" tu peux éventuellement préparer le fichier en lui donnant tous les droits, évidemment cela ne marchera que si tu es administrateur ou au moins propriétaire du répertoire...

public void autoriser(File f)
{
    if (!f.canRead() && !f.setReadable(true))
        System.err.println(f.getName()+" : aucune permission de lecture");
    
    if (!f.canWrite() && !f.setWritable(true))
        System.err.println(f.getName()+" : aucune permission d'écriture");
    
    if (!f.canExecute() && !f.setExecutable(true))
        System.err.println(f.getName()+" : aucune permission d'exécution");
}
0
J'ai appliqué les insctructions de la méthode autoriser:
if (!f.canRead() && !f.setReadable(true))
System.err.println(f.getName()+" : aucune permission de lecture");

if (!f.canWrite() && !f.setWritable(true))
System.err.println(f.getName()+" : aucune permission d'écriture");

if (!f.canExecute() && !f.setExecutable(true))
System.err.println(f.getName()+" : aucune permission d'exécution");

avant de faire la fonction "renameTo" mais çà n'a pas marché. Il ne m'a pas retourné de résultat pour les conditions if. Et finalement il ne supprime pas les fichiers.
En fait je travaille sur des fichiers sont je veux stocker le contenu dans des bases de données et chaque fichier que je lis, je le transferre dans un autre repertore. Je dois transferer ces fichiers parce que mon programme scrute en continu le repertoire de reception pour traiter les fichiers reçus et si les fichiers traités ne sont donc pas supprimés, ils seront traités plus d'une fois et même indéfiniment.
En réalité, j'ai testé des bouts de code pour le transfert des fichiers de ce repertoire et çà avait marché, mais une fois que je cpies le code dans mon application, les fichiers ne sont pas supprimés mais uniquement copiés. (je traite les fichiers avant de la transferer)
C'est donc çà la petite histoire
0