2013-05-16 10 views
2

J'utilise le serveur tomcat pour mon application java (Servlet, jsp) .Dans ma page de servlet appelant une fonction de classe java.En fait, le fichier java est écrit séparément et je vais appeler la fonction écrite à l'intérieur.Avec la fonction, je J'ai besoin de lire un fichier config (défini par l'utilisateur) dans un but précis. Aussi, j'utilise la classe File pour cela.Comment indiquer le chemin relatif de mon fichier dans un fichier java?

Mais, ici, je dois donner le chemin relatif du fichier de configuration (défini par l'utilisateur). Parce que maintenant je cours cette application dans le serveur Windows local.Mais mon serveur live est basé sur Linux.So, le chemin du fichier est changé en linux. Donc, je dois donner le chemin relatif du fichier qui est commun aux machines Windows et Linux.

Existe-t-il un moyen de le faire?

S'il vous plaît me guider pour sortir de ce problème?

+0

Ce fichier est-il dans votre classpath ou directement sous web-inf? – NINCOMPOOP

Répondre

6

Placez votre fichier de configuration sous votre classe webapp WEB-INF/dossier et lu comme celui-ci dans le code

InputStream is= 
    YourClassName.class.getResourceAsStream("point_config.txt"); 
1

Le chemin du fichier de configuration conduit dans le dossier WEB-INF

tomcat\webapp\myapp\WEB-INF\src\point_config.txt 

Tout ce qui se trouve dans WEB-INF est protégé et ne peut pas être défini par l'utilisateur une fois l'application Web lancée. Si vous avez l'intention de lire à partir d'un fichier de configuration défini par l'utilisateur à partir du système de fichiers, utilisez une API telle que common configuration API.

Si vous souhaitez conserver le fichier dans le dossier WEB-INF, utilisez la méthode Class.getResourceAsStream() pour obtenir la configuration à la place. Cela ne rendrait pas la configuration définie par l'utilisateur.

+0

Êtes-vous sûr que l'application ne peut pas atteindre à l'intérieur de WEB-INF? Pouvez-vous fournir une source pour la déclaration concernant la protection? Je sais qu'un utilisateur ne peut pas frapper un fichier dans WEB-INF, mais je crois que l'application peut. –

+1

@KevinBowersox Non, l'application peut atteindre WEB-INF via 'Class.getResourceAsStream()'. L'utilisateur ne peut pas atteindre à l'intérieur de WEB-INF. Je l'ai mentionné pour souligner qu'une propriété à l'intérieur de WEB-INF n'est pas vraiment définie par l'utilisateur. –

Questions connexes