OVH Cloud OVH Cloud

URI, URL, File, etc

12 réponses
Avatar
Vinz
salut à tous,

J'ai besoin d'un petit coup de main parce que je m'y perds un peu dans les
dénominations entre URI, URL, File.

Je dois utiliser un objet qui prend en paramètre un File. Ce fichier que
j'utilise se trouve dans le répertoire classes/conf/monFichier.xml . Tout
ceci se retrouve ensuite dans un .war

j'ai lu quelque part que c'était mieux de passer par des URI (dont je ne
suis pas sûr d'avoir bien compris l'intérêt). voilà ce que je fais :

URI fichierConfURI=new URI("/conf/classes/monFichier.xml");
File fichierConfig= new File(fichierConfURI);

J'ai une exception qui est levée, qui me dit "URI is not absolute" .

Et quand j'essaye de passer par un URL (qui elle est absolue, car quand je
débugue, je vois qu'elle vaut c:\program files\etc), et que je passe cette
URL pour construire mon URI, j'ai la même erreur.

Si quelqu'un a un début de solution sur ce problème ça m'intéresse beaucoup,
parce que je n'ai rien trouvé sur l'erreur "URI is not absolute" sur google

merci d'avance

--
Vinz

2 réponses

1 2
Avatar
Jean Bernard Root
Vinz wrote:

Comment le lisez-vous ?



par le debugger d'Eclipse




C'est un stream, il faut le lire en appelant read() dessus pour obtenir
les données qu'il y a dans la resource vers laquelle il pointe. Il ne se
remplit magiquement avec le contenu de votre fichier ...


Avatar
Vinz
merci à tous les deux, je m'en suis sorti ! ça m'a pris l'après-midi, mais
en bidouillant, je m'en suis sorti ! j'ai utilisé le
getClass().getResourceAsStream() et en essayant plusieurs trucs j'ai réussit
!
Je vais pouvoir partir en week-end l'esprit tranquille ;-)

merci encore


"Farid" a écrit dans le message de
news:40a4e434$0$31384$
hum. bizzare que ca ne marche pas.
c'est ce que j'utilises dans tous mes test unitaire pour charger des
fichiers utilises dans ces test.
mais c'est vrai que je n'ai pas d'espace dans le chemin, qui est un
problem

CLASSIQUE avec java...

2 solutions:
la premiere passe comme dans mon code par
String f = url.getFile();
et replace tous les sequence %20 par des veritable espace.

la deuxieme solution comme te l'indique Jean Bernard,
passe par un getResourceAsStream()

Puisque de toute facon tu veut travailler avec un xml existant,
normalement

les outils te permettant de faire du xml, devrait aussi donner access au
fichier xml via des inputstream.
voici un bout de code que j'utilise pour recuperer un access (en lecture)
sur un fichier contenu dans mon jar.

ClassLoader cl = MaClass.class.getClassLoader();
InputStream is = cl.getResourceAsStream("conf/monFichier.xml");

En esperant que sa aidera.

PS; entre nous, il est toujours recommende de ne pas installer des
programmes java genre IDE et server dans des repertoires avec des espace.
ca

pose TOUJOURS plein de problem !

Farid.


"Vinz" wrote in message
news:c82ig4$u0$
c'est ce que j'ai essayé de faire en attendant :

String fichierConf="/conf/monFichier.xml";
URL URLfichierConf =getClass().getResource(fichierConf);

File FilefichierConf=new File(URLfichierConf.getFile());

if(!FilefichierConf.exists())

logger.error("fichier de conf des organismes introuvable");

et effectivement, le fichier n'existe pas, alors que quand je regarde
avec


le debugger ce qu'il y a dans URLfichierConf, il me trouve bien le
fichier





(/c:/Program%20Files/eclipse/workspace/projet/WEB-INF/classes/conf/monFichie

r.xml").

et pourtant, quand je crée un fichier à partir de ça, le fichier
n'existe


pas. C'est quand même pas à cause de l'espace entre "program files", ou
du


sens du séparateur de répertoire ??






"Farid" a écrit dans le message de
news:40a4c24f$0$31383$
Essaye ca
en passant la string "/conf/monFichier.xml"

public File getSrcFile(String res)
{

URL url = this.getClass().getResource(res);
if (url == null)
{
throw new RuntimeException("Sorry - document not found:" + res);
}
String f = url.getFile();

return new File(f);
}

"Vinz" wrote in message
news:c82a8c$rib$
salut à tous,

J'ai besoin d'un petit coup de main parce que je m'y perds un peu
dans




les
dénominations entre URI, URL, File.

Je dois utiliser un objet qui prend en paramètre un File. Ce fichier
que



j'utilise se trouve dans le répertoire classes/conf/monFichier.xml .
Tout


ceci se retrouve ensuite dans un .war

j'ai lu quelque part que c'était mieux de passer par des URI (dont
je




ne
suis pas sûr d'avoir bien compris l'intérêt). voilà ce que je fais :

URI fichierConfURI=new URI("/conf/classes/monFichier.xml");
File fichierConfig= new File(fichierConfURI);

J'ai une exception qui est levée, qui me dit "URI is not absolute" .

Et quand j'essaye de passer par un URL (qui elle est absolue, car
quand



je
débugue, je vois qu'elle vaut c:program filesetc), et que je passe
cette


URL pour construire mon URI, j'ai la même erreur.

Si quelqu'un a un début de solution sur ce problème ça m'intéresse
beaucoup,

parce que je n'ai rien trouvé sur l'erreur "URI is not absolute" sur
google


merci d'avance

--
Vinz
















1 2