2009-07-21 5 views
2

J'ai besoin de générer des fichiers texte compliqués à partir d'une application de bureau Java.Copier un fichier de ressources dans un dossier?

J'ai décidé que le code serait considérablement plus facile à implémenter si je pouvais copier un fichier de modèle et l'adapter à tout ce qui doit être construit.

Je distribuerai seulement un pot aux clients. Y at-il une meilleure pratique sur la façon de gérer cela?

  • Est-il même possible de copier une ressource à partir du pot au moment de l'exécution?
  • Vaut-il mieux «générer automatiquement» un modèle lors de la première exécution du pot?
+0

Je ne comprends pas d'où vous voulez copier le fichier. Pouvez-vous le rendre un peu plus clair? Où est le fichier modèle? Est-ce dans le pot? Voulez-vous que les clients aient ce fichier sur leur machine après le lancement de l'application? – amorfis

+0

duplicata possible de [Comment copier le fichier dans le pot à l'extérieur du pot?] (Http://stackoverflow.com/questions/10308221/how-to-copy-file-inside-jar-to-outside-the-jar) –

Répondre

8

Vous pouvez lire un fichier stocké dans votre pot en utilisant:

Class.getResourceAsStream(pathToFile); 

Voir cette question pour plus de détails.

5

Oui, vous pouvez lire une ressource de votre JAR et l'écrire dans votre système de fichiers. Comme le suggère kgiannakakis, vous aurez besoin de ressources en tant que flux.

Toutefois, quel classloader utiliser est trouble. Je l'ai souvent vu des suggestions que dans les applications Web, vous devez utiliser le contexte classloader:

Thread.currentThread().getContextClassLoader().getResourceAsStream() 

Mais sur une recherche rapide pour confirmer était toujours le bon conseil, beaucoup de personnes recommandent la classe actuelle chargeur place du chargeur de classe de contexte, bien que la plupart des gens reconnaissent qu'il n'y a pas de réponse qui fonctionnera parfaitement dans toutes les situations. Whee! À ce stade, je dirais qu'il suffit d'utiliser le chargeur de classe actuel comme suggéré par @kgiannakakis - c'est plus simple, et il n'est pas clair que l'utilisation du chargeur de classe de contexte sera meilleure. Si vous rencontrez un scénario où cela ne fonctionne pas, essayez le chargeur de classe de contexte comme alternative.

Questions connexes