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 :

Copie d'un fichier et chemin absolu


Sujet :

Entrée/Sortie Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Copie d'un fichier et chemin absolu
    Salut,

    bon je suis un peu (beaucoup même) newbie en Java, et je bosse actuellement sur un projet.

    Je dois créer un site de commerce en ligne (techno servlet) en utilisant JBoss et une base de données hsqldb.

    Là j'essaye de faire correspondre une image à chacun des produits de ma base. Dans ma partie admin (là où il est possible d'ajouter / supprimer / editer des produits) j'utilise les JFileChooser pour ouvrir une boite de dialogue. Ainsi, l'administrateur peux aller chercher un fichier d'image sur son disque, et ça copie ce fichier dans un répertoire spécifique. C'est là que les problèmes commencent... J'arrive à créer le JFileChooser, à copier le fichier selectionné, mais impossible de lui spécifier un chemin de répertoire absolu...

    J'aimerai être capable de copier le fichier sélectionné dans un répertoire, mais avec un chemin absolu (et donc non relatif à mon projet...).

    Si quelqu'un à une idée, je suis preneur ;-)

  2. #2
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Un petit peu de code ? Et le problème précis que tu rencontres ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Ici je crée mon JFileChooser qui m'ouvre donc une boite de dialogue pour que l'administrateur puisse aller chercher, sur son disque, un fichier d'image.

    Une fois que le fichier est sélectionné, je fait un appel à la méthode copyFile qui est en charge de copier le fichier selectionné dans un nouveau répertoire...

    C'est au moment de la copie que je n'arrive pas à donner un répertoire avec un chemin absolu. Par exemple j'aimerai que les images soient copiées à la racine de mon disque dur dans : Projet/prod_pictures/

    public void actionPerformed(ActionEvent evt) {

    JFileChooser chooser = new JFileChooser();

    chooser.setApproveButtonText("Choix du fichier..."); //intitulé du bouton

    chooser.showOpenDialog(null); //affiche la boite de dialogue
    if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
    {
    status.setText(chooser.getSelectedFile().getPath()); //si un fichier est selectionné, récupérer le fichier puis sont path et l'afficher dans le champs de texte
    File f1 = chooser.getSelectedFile();
    File f2 = new File("test/" + f1.getName());

    String path = f1.getAbsolutePath();

    try {
    copyFile(f1, f2);
    }
    catch(Exception e){

    }
    }
    }

    public static void copyFile(File src, File dest) throws IOException {
    if (!src.exists()) throw new IOException("File not found '" + src.getAbsolutePath() + "'");

    BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(dest));
    BufferedInputStream in = new BufferedInputStream(new FileInputStream(src));

    byte[] read = new byte[128];
    int len = 128;
    while ((len = in.read(read)) > 0)
    out.write(read, 0, len);

    out.flush();
    out.close();
    in.close();
    }

  4. #4
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut

    Sinon ben simplement à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    File f2 = new File("test/" + f1.getName());
    tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    File f2 = new File("C:\\Projet\\" + f1.getName());

  5. #5
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 321
    Points : 360
    Points
    360
    Par défaut
    Citation Envoyé par chtig

    Sinon ben simplement à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    File f2 = new File("test/" + f1.getName());
    tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    File f2 = new File("C:\\Projet\\" + f1.getName());
    Dans un soucis de portabilité, il vaudrait mieux faire abstraction des \ et / en preferant la methode ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    File f2 = new File("C:" + File.separator + "Projet" + File.separator + f1.getName());

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci de vos réponses (et désolé pour l'oublie de la balise)... Je ne savais pas comment faire et je me suis aperçu que ça faisait vraiment.... "crade" !

    Les solutions que vous me donnez sont bien, en effet, mais si (comme moi), l'utilisateur est sur un Mac ?? Ou même sur un Unix quelconque... il va y avoir un problème ^^

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

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Citation Envoyé par apone
    Merci de vos réponses (et désolé pour l'oublie de la balise)... Je ne savais pas comment faire et je me suis aperçu que ça faisait vraiment.... "crade" !

    Les solutions que vous me donnez sont bien, en effet, mais si (comme moi), l'utilisateur est sur un Mac ?? Ou même sur un Unix quelconque... il va y avoir un problème ^^
    Le "C:" va effectivement poser problème mais un petit tour sur la javadoc t'aurais permis de trouver tout seul comme un grand que java.io.File possède une méthode listRoots() qui elle permet d'être portable. Si ce n'est pas le cas, c'est que tu as un problème de conception...

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    listRoots()... ok, je vais essayer :-) Merci

  9. #9
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    @leyee : je ne vois pas trop en quoi le File.separator fait que c'est portable ... seul avec le "C:" en dur ça ne change rien ...

    En revanche, le "listRoots" permet effectivement une certaine portabilité ... Mais après en Windows c'est tout de même un peu pénible car il n'y en a pas qu'un, donc va savoir lequel utiliser ... Ca me semble un peu étrange comme concept de bouger un fichier à un endroit "non déterminé"

  10. #10
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 321
    Points : 360
    Points
    360
    Par défaut
    Oui je suis tout a fait d'accord avec toi : en général, je préfère lancer un JFileChooser dans un répertoire connu récupéré par une des expressions suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    System.getProperty("user.dir"); //repertoire de lancement de l'appli
    System.getProperty("user.home");//répertoire utilisateur

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Oui : lancer un JFileChooser directement dans un répertoire connu serait exactement la solution que je cherche : je veux pouvoir importer mes images dans le workspace de mon application.

    Donc je dois utiliser un System.getProperty(), mais comment ouvrir le JFileChooser à cet endroit ?

    Merci

  12. #12
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    En lisant la javadoc tu verrais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    JFileChooser(File currentDirectory)
    ...

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    merci

  14. #14
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Oublie pas le tag

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] lien hypertext : chemin absolu pour une copie de celulle entre deux fichier
    Par leprechaun dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/07/2009, 14h20
  2. Accès fichier Chemin absolu
    Par psal78 dans le forum Langage
    Réponses: 8
    Dernier message: 04/06/2007, 18h52
  3. Réponses: 1
    Dernier message: 28/09/2006, 13h09
  4. [Batch] chemin absolu / Nom de fichier
    Par andlio dans le forum Windows
    Réponses: 3
    Dernier message: 03/08/2006, 03h40
  5. [langage] chemin absolu d un fichier
    Par nono1782 dans le forum Langage
    Réponses: 4
    Dernier message: 20/07/2004, 14h02

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