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 :

objet File à partir d'une URL


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Points : 13
    Points
    13
    Par défaut objet File à partir d'une URL
    Bonjour,


    En bref - la question est : comment transformer une URL en objet File ?

    Le problème complet :

    J'ai eu beau chercher, je n'ai pas trouvé sur ce site ni ailleurs. Je cherche à utiliser FOP pour créer des PDF hors FOP demande des objets "File" (fichiers de config) pour fonctionner.

    Ces paramètres sont fournis à mon programme via le parsing d'un fichier xml qui donne l'url des fichiers en question. Il me faut donc transformer ces url en objets "File" pour faire fonctionner FOP.


    J'ai essayé de transformer l'URL en URI et de créer un fichier à partir de cette URI mais, l'URI créée (affichée via "toString()") concatenne l'emplacement dans lequel se trouve mon programme "/home/.../lib/" et mon adresse url au lieu de pointer directement sur le fichier voulu...

    voilà le code en question :

    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
     
    URL myUrl = null;
    URI myUri = null;
    File myFile = null;
     
    try {
        myUrl = ClassLoader.getSystemResource(get_url_path());
        if (myUrl != null){
            myUri  = new URI(myUrl.toString());
            myFile = new File(myUri);
            System.out.println("cas 1 - " + myFile.toURI().toString());
        }
        else {
            myFile = new File(getDtd()) ;
            System.out.println("cas 2 - " + myFile.toURI().toString());
        }
    } catch (URISyntaxException e) {
        System.out.println("URI syntax error using path : "+ getDtd());
    }
    Note :ce code est sensé gérer la création d'un objet File à partir d'un objet distant (cas 1 - par "http") ou un fichier local (cas 2)


    Merci par avance pour toute aide !!!

    David

  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,

    Citation Envoyé par dasc82 Voir le message
    Note :ce code est sensé gérer la création d'un objet File à partir d'un objet distant (cas 1 - par "http") ou un fichier local (cas 2)
    La classe File ne crée aucun fichier et représente seulement un fichier en local sur le système de fichier standard du système d'exploitation...


    Il faut donc que tu copie le contenu de l'URL dans un fichier en local via la méthode openStream() de la classe URL et une bonne gestion des flux...


    a++

  3. #3
    Membre à l'essai
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Points : 13
    Points
    13
    Par défaut précision...
    Déjà merci pour la réponse, j'ai pensé à utiliser quelque chose de ce genre, récupérer le fichier pour bien savoir où il est. Mais...

    Mais en fait, mon programme se trouve sur la même machine que mes fichiers de configuration à récupérer... Je m'explique...

    Seulement, pour faciliter l'utilisation du fichier de configuration utilisateur (qui donne les chemins vers différents fichiers de config) et permettre de modifier la structure du serveur, au lieu de donner l'adresse absolue des fichiers, je ne suis autorisé qu'à donner leur chemin via "http".

    en String, un path récupéré dans le fichier de config, ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    debut_chemin_http +"/config/fop_config.xml"
    maintenant, sur ma machine, cela correspond aussi au chemin absolu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "/home/.../config/fop_config.xml"
    Je pensais que changer mon URL en URI (URI uri = new URI(monURL.toString)) ferait le travail mais ça ne fonctionne pas correctement... comme dit plus haut...

    une idée ?

    Merci par avance encore !!
    David

  4. #4
    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
    Si tu accès par HTTP alors tu considères que les fichiers peuvent être n'importe où et pas forcément en local, et tu dois donc les copier...


    Par contre cela m'étonne fortement qu'une API comme FOP n'accepte que des File... Tu aurais un lien vers l'API de cette méthode ?

    a++

  5. #5
    Membre à l'essai
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Points : 13
    Points
    13
    Par défaut résolu - inputstream bien géré par FOP
    Finalement, ta remarque m'a permis de bien décaller mon problème.

    En effet, FOP (en fait, il s'agit d'Avalon -> apache = pour fichier de config) gère bien des input de type inputstream donc à partir d'objets URL, en faisant un "openstream", ça marche très bien.

    dans mon cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    			File myFile = null;
    			InputStream myInputStream = null;		
    			if(!(myFile = new File(getConfigFileName())).exists()){
    				URL myFopConfigUrl = new URL(getConfigFileName());			
    				myInputStream = myFopConfigUrl.openStream();
    			} else {
    				myInputStream = new FileInputStream(getConfigFileName());
    			}
    			setTheCfgBuilder(new DefaultConfigurationBuilder());
    			setTheCfg(getTheCfgBuilder().build(myInputStream));
    si la string représente un fichier local, je l'associe à mon flux d'entrée pour FOP sinon je l'associe en tant qu'URL (sachant que préliminairement à l'exécution du programme, un test vérifie l'existence des fichiers et que l'adresse qui pointe dessus soit une URL, soit un "chemin local").

    Merci !

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 27/03/2007, 15h32
  2. IE ouvre une appli à partir d'une URL/fichier
    Par Sniper94-2 dans le forum Windows
    Réponses: 4
    Dernier message: 23/11/2005, 14h07
  3. [ java.net ] récupérer un fichier PDF à partir d'une URL
    Par nico2280 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 10/11/2005, 11h09
  4. Copier un fichier à partir d'une URL ?
    Par oulahoup dans le forum ASP
    Réponses: 2
    Dernier message: 18/08/2005, 21h52
  5. [DOM] [JAVA + XML] Ouvrir un fichier xml à partir d'une url
    Par Hell dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 09/06/2005, 00h06

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