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 :

[Débutant]Copie de fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Par défaut [Débutant]Copie de fichier
    Bonjour,

    J'aurais une question a propos de la copie de fichier que jai trouvé dans la faq du forum et ca serait a propos de ficher destination.

    En fait je vous explique, je souhaite copier un fichier dans un explorateur de fichier que j'ai fait.
    L'utilsateur clique sur un fichier puis sur un bouton 'copier' et a ce moment la je fais la copie du fichier selectionné dans un espace temporaire que je défni moi meme (c:\temp).

    Normalment j'arrive a récupérer le fichier source avec un getpath mais pour la déclaration de l'emplacement destination (c:\temp) Je ne vois pas comment on déclare cela.
    Voici ce que j'essaye de faire

    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
     
    if (e.getSource() == m21) // ici je l'ecouteur recoit un signal
         {
     
          File f = mainWindow.fileFromPath(a.getPath());
          File destination;
          //boolean resultat = 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(f);
                        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
                        //resultat = true;
                } catch( java.io.FileNotFoundException x ) {
                } catch( java.io.IOException y ) {
                } finally {
                        // Quoi qu'il arrive, on ferme les flux
                        try {
                                sourceFile.close();
                        } catch(Exception y) { }
                        try {
                                destinationFile.close();
                        } catch(Exception y) { }
                } 
     
         }
    Merci de votre aide

  2. #2
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Billets dans le blog
    2
    Par défaut
    je ne sais pas si c'est une réponse acceptable mais pour faire ce genre de truc, tu pourrais aisément utiliser ANT. Cet outil de "scripting" peut être embarqué dans toute application Java et il est facilement utilisable.

    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
     
    package developpez;
    import java.io.File;
    import org.apache.tools.ant.Project;
    import org.apache.tools.ant.taskdefs.Copy;
    public class Main {
     /**
      * @param args
      */
     public static void main(String[] args) {
      Copy cpyTask = new Copy();
      Project prj = new Project();
     
      cpyTask.setProject(prj);
      cpyTask.setTodir(new File("c:\\temp"));
      cpyTask.setFile(new File("c:\\tmp\\toto.xml"));
      cpyTask.setVerbose(false);
      cpyTask.execute();
     }
    }

  3. #3
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Euh j'ai peut-être pas saisi le problème... Mais moi je répondrais tout simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File destination = new File("C:\\TEMP");
    Si tu bosse en java >=1.4, il y a beaucoup mieux pour la copie de fichiers/dossiers... en utilisant java.nio

    Cadeau
    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
     
      public static void copy(File source, File target) throws IOException {
        if (source.isDirectory()) {
          if (!target.exists() && !target.mkdirs()) {
            throw new IOException("Impossible de créer le répertoire " +
              target.getAbsolutePath());
          }
     
          File[] files;
     
          try {
            files = source.listFiles();
          } catch (InternalError e) {
            //FIX Bug #5056583 sometimes thrown by listFiles and shortcuts!
            files = new File[0];
          }
     
          for (File sourceFile : files) {
            String path = sourceFile.getAbsolutePath();
            File targetFile = new File(target.getAbsolutePath() +
                path.substring(path.lastIndexOf(System.getProperty("file.separator"))));
            copy(sourceFile, targetFile);
          }
     
        } else if (source.exists()) {
          FileChannel in = null; // canal d'entrée
          FileChannel out = null; // canal de sortie
     
          try {
            // Init
            in = new FileInputStream(source).getChannel();
            out = new FileOutputStream(target).getChannel();
            // Copie depuis le in vers le out
            in.transferTo(0, in.size(), out);
          } finally { // finalement on ferme
     
            if (in != null) {
              try {
                in.close();
              } catch (IOException e) {
                //
              }
            }
     
            if (out != null) {
              try {
                out.close();
              } catch (IOException e) {
                //
              }
            }
          }
        } else {
          throw new IOException("File doesn't exist: " + source.getAbsolutePath());
        }
     
        Thread.yield();
    }
    et en ajoutant les imports...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
     
    import java.nio.channels.FileChannel;

Discussions similaires

  1. Question d'un débutant / copie fichiers avancé
    Par booleanf dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 21/08/2009, 15h32
  2. Réponses: 3
    Dernier message: 18/10/2008, 13h35
  3. [Débutant] copie de fichiers en gardant l'arborescence
    Par Yannos94 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 21/11/2007, 13h37
  4. [Projet débutant] copie de fichiers
    Par stephonline29 dans le forum Débuter
    Réponses: 13
    Dernier message: 10/11/2005, 14h01
  5. Copie de fichier
    Par Bjorn dans le forum C
    Réponses: 4
    Dernier message: 11/06/2002, 15h23

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