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

Java Discussion :

Problème espaces dans nom de fichier


Sujet :

Java

  1. #1
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut Problème espaces dans nom de fichier
    Bonjour à tous,
    je rencontre actuellement un problème que je n'arrive pas à résoudre...
    J'ai une appli java qui me récupère et ouvre des fichiers pdf dans une arborescence mais lorsque j'ai des espace dans le nom du fichier ou d'un dossier ça plante.
    J'ai essayé avec ces deux solutions mais sans succès :
    ...\\Dossier~1\\nomFichier~1.pdf
    ...\\\"Dossier 1\\nom du fichier.pdf\"
    Est-ce que quelqu'un sait comment prendre en compte les espaces dans un chemin ou un nom de fichier ?
    Merci d'avance pour vos réponses.

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    On pourrait voir plus précisément comment tu utilises tout cela dans ton code ?
    Tu as tenter d'afficher le chemin pour voir s'il est bien correct ?

    a++

  3. #3
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut
    Salut adiGuba,
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      try {
           Desktop.getDesktop().open(new File("\\\\Serveur\\dossier1\\nom du fichier.pdf"));                        
    } catch (IOException ioe) {
           // Traitement de l'exception
           System.out.println("Erreur dans l'ouverture du PDF..." + ioe);
    }
    Et j'ai comme erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "\\serveur\dossier1\nom%20du%20fichier" fichier ou chemin introuvable
    Mon chemin est bien correct, c'est vraiment les espaces qui me posent problème.
    Merci d'avance.

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 951
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 951
    Points : 5 671
    Points
    5 671
    Par défaut
    Mia,

    Ton chemin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "\\serveur\dossier1\nom%20du%20fichier"
    est suspect, car il signifie que "serveur" est inclus dans un dossier sans nom.

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par droggo Voir le message
    est suspect, car il signifie que "serveur" est inclus dans un dossier sans nom.
    C'est tout à fait normal : c'est un chemin UNC qui pointe vers une machine distante (fichier partagé).


    C'est justement le chemin UNC qui pose problème, puisque l'implémentation Windows de Desktop.open() utilise la fonction Win32 ShellExecute() qui gère mal les URI des chemin UNC lorsqu'il y a un espace (remplacé par un %20 dans l'URI)

    Le bugs a été signalé mais comme cela touche à l'API Windows, il n'y a pas de correctif de prévu : http://bugs.sun.com/bugdatabase/view...bug_id=6550588


    Il y a toutefois une solution qui consiste à ouvrir manuellement le fichier dans ce cas là :
    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
    	public static void open(File file) throws IOException {
    		// On utilise obligatoirement le chemin absolu :
    		// (les chemins relatifs et/ou incorrect pourrait poser problème)
    		file = file.getAbsoluteFile();
     
    		// Puis on récupère le nom de l'OS :
    		String osName = System.getProperty("os.name").toLowerCase();
    		if (osName.contains("windows")) {
    			// Sous Windows on appelle directement Runtime.exec() :
    			Process process = Runtime.getRuntime().exec(
    					new String[] { "rundll32", "url.dll,FileProtocolHandler", file.getPath() });
    			// Les flux sont inutiles, alors on les ferme de suite :
    			process.getOutputStream().close();
    			process.getInputStream().close();
    			process.getErrorStream().close();
    		} else {
    			// Pour tout les autres systèmes, on peut appeler directement Desktop().open() :
    			Desktop.getDesktop().open(file);
    		}
    	}

    a++

  6. #6
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut
    Merci beaucoup adiGuba pour ta ptite fonction, ça fonctionne parfaitement.
    Je n'étais pas au courant pour ce bug chez SUN, merci pour l'info.
    Bonne journée.

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 951
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 951
    Points : 5 671
    Points
    5 671
    Par défaut
    Hie,
    Citation Envoyé par adiGuba Voir le message
    C'est tout à fait normal : c'est un chemin UNC qui pointe vers une machine distante (fichier partagé).
    Très débutant en Java, j'ignorais. C'est noté.

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par droggo Voir le message
    Très débutant en Java, j'ignorais. C'est noté.
    Ce n'est pas du Java mais propre à Windows

    a++

  9. #9
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut Problème exécution AcrobatReader
    Bonjour à tous,
    J'ai une application java qui me permet d'ouvrir un fichier pdf dont voici le code :
    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
    public static void open(File file) throws IOException {
    	// On utilise obligatoirement le chemin absolu :
    	// (les chemins relatifs et/ou incorrect pourrait poser problème)
    	file = file.getAbsoluteFile();
     
    	// Puis on récupère le nom de l'OS :
    	String osName = System.getProperty("os.name").toLowerCase();
    	if (osName.contains("windows")) {
    		// Sous Windows on appelle directement Runtime.exec() :
    		Process process = Runtime.getRuntime().exec(
    			new String[] { "rundll32", "url.dll,FileProtocolHandler", file.getPath() });
    		// Les flux sont inutiles, alors on les ferme de suite :
    		process.getOutputStream().close();
    		process.getInputStream().close();
    		process.getErrorStream().close();
    	} else {
    		// Pour tout les autres systèmes, on peut appeler directement Desktop().open() :
    		Desktop.getDesktop().open(file);
    	}
    }
    Ce code fonctionne parfaitement sur mon pc avec comme configuration Windows XP et AcrobatReader 8. En revanche lorsque j'exécute mon code sur mon serveur avec comme config windows 2003 et AcrobatReader 7, rien ne se passe. J'ai bien mon processus AcroRd32.exe qui est lancé mais mon fichier ne s'ouvre pas.
    Quelqu'un a-t-il une idée à ce sujet ?
    Merci d'avance pour vos réponses.

  10. #10
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut
    Désolé, je ne voulais par relancer cette discussion mais en créer une nouvelle, c'est une fausse manip de ma part.
    Encore désolé.

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

Discussions similaires

  1. Petits pb en VBA :espace dans noms des fichiers
    Par Calimero33 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/07/2010, 23h23
  2. Problème espace dans Spool vers fichier texte
    Par hatimov dans le forum PL/SQL
    Réponses: 7
    Dernier message: 25/06/2010, 18h10
  3. [HttpURLConnection] HTTP 505 espace dans nom de fichier
    Par ska_root dans le forum Langage
    Réponses: 5
    Dernier message: 11/01/2010, 14h53
  4. Problème d'espace dans nom de dossier.
    Par Snooky68 dans le forum Général Python
    Réponses: 11
    Dernier message: 29/08/2008, 15h55
  5. problème d'accent dans nom de fichier à récupérer
    Par Gunner4902 dans le forum Langage
    Réponses: 4
    Dernier message: 20/07/2008, 14h11

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