IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Question sur l'éternel delete de Java :-)


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    aucune
    Inscrit en
    Juillet 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Juillet 2007
    Messages : 134
    Par défaut Question sur l'éternel delete de Java :-)
    Bonjour,

    J'ai un petit soucis avec la méthode delete de File, en fait je voudrais déplacer un fichier d'un dossier partagé sur un ordi distant vers un dossier local, la copie se passe bien mais la suppression du fichier se trouvant sur la machine distante pose problème, impossible de supprimer même avec tous les droits possibles sur le dossier je n' y arrive pas

    Je me demande si delete() fonctionne sur des chemins du genre "\\MachineDistante\DossierPartage\Fichier.pdf" ?

  2. #2
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    9 fois sur 10, le delete qui ne fonctionne pas est dû à une mauvaise gestion des flux et tout particulièrement leur fermeture.
    La première question à te poser :
    Fermes-tu bien TOUS les flux dans un bloc finally ?

  3. #3
    Membre très actif
    Profil pro
    aucune
    Inscrit en
    Juillet 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Juillet 2007
    Messages : 134
    Par défaut
    Ce n'est pas un fichier que j'ouvre ni en lecture ni en écriture... je ne fais qu'un listFiles() puis je parcours le tableau et je fais delete() après avoir fait ma cuisine interne

  4. #4
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Une idée pour vérifier s'il s'agit bien d'un problème sur les chemins en \\ serait de monter \\MachineDistante\DossierPartage sur un lecteur réseau X: et de vérifier si cela fonctionne avec X:\Fichier.pdf .

    Une autre source possible d'erreur : à tu correctement échappé les antislash? Les \ entre guillemets deviennent \\ donc les \\ doivent devenir \\\\.

  5. #5
    Membre très actif
    Profil pro
    aucune
    Inscrit en
    Juillet 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Juillet 2007
    Messages : 134
    Par défaut
    Le fichier j'arrive bien à y accéder puisque en fait je le copie ailleurs avant de chercher à le supprimer...c'est que la suppression me retourne "true" mais le fichier lui reste dans le dossier "\\Machine distante\dossier partagé\MonFichierCollant.pdf" , c'est pas fou tout ça

    Vous remarquerez que je contredis mon post précédent , puisque je le copie donc je l'ouvre en lecture , sauf que j'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    public static boolean moveFile(File source, File destination)
        {
            if ( ! destination.exists())
            {
                System.out.println("La destination n'existe pas");
                // On essaye avec renameTo
                boolean result = source.renameTo(destination);
     
                if ( ! result)
                {
                    System.out.println("renameTo() ne marche pas...On essaye de recopier le document avec copyFile()");
                    // On essaye de copier
                    result = true;
                    result &= copyFile(source, destination);
                    if (result)
                    {
                        int counter = 0;
                        System.out.println("copie reussie, on essaye de supprimer le document original");
                        while ( ! result)
                        {
                            result &= source.delete();
                            counter ++;
                        }
     
                        if ( ! result)
                        {
                            System.out.println("impossible de supprimer le document original");
                        }
                        else
                        {
                            System.out.println("Houraaaa ..... Fichier source supprime");
                        }
                    }
                }
                return (result);
            }
            else
            {
                // Si le fichier destination existe, on annule ...
                System.out.println("La destination existe deja");
                return (false);
            }
        }
     
        public static boolean copyFile(File source, File destination)
        {
            boolean result = false;
     
            //Declaration des flux
            java.io.FileInputStream sourceFile = null;
            java.io.FileOutputStream destinationFile = null;
     
            try
            {
                //Création du fichier
                destination.createNewFile();
     
                /* Ouverture des flux */
                sourceFile = new java.io.FileInputStream(source);
                destinationFile = new java.io.FileOutputStream(destination);
     
                /* Lecture par segment de 0.5Mo */
                byte buffer[] = new byte[512 * 1024];
                int nbLecture;
     
                while ((nbLecture = sourceFile.read(buffer)) != -1)
                {
                    destinationFile.write(buffer, 0, nbLecture);
                }
     
                /* Copie réussie */
                result = true;
            }
            catch (java.io.IOException e)
            {
                e.printStackTrace();
            }
            finally
            {
                /* Quoi qu'il arrive, on ferme les flux */
                try
                {
                    sourceFile.close();
                    destinationFile.close();
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
            return result;
        }
    ça vous rappelle un code sur Developpez.com ? c'est normal c'est là que je l'ai piqué

  6. #6
    Membre très actif
    Profil pro
    aucune
    Inscrit en
    Juillet 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Juillet 2007
    Messages : 134
    Par défaut
    je viens de faire un test avec des chemins d'accès locaux et là pas de soucis ça supprime correctement ...

Discussions similaires

  1. question sur new et delete
    Par yann458 dans le forum C++
    Réponses: 15
    Dernier message: 09/08/2014, 19h52
  2. Petite question sur l'import les packages Java
    Par zpico dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 08/04/2012, 10h52
  3. Question sur les tables inserted et deleted
    Par critok dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/06/2006, 22h03
  4. Questions sur les compilateurs java
    Par irenee dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 30/05/2006, 10h42
  5. Petite question sur les conventions de nommage en Java
    Par implosion dans le forum Langage
    Réponses: 7
    Dernier message: 18/01/2006, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo