Comment dois-je charger des fichiers dans mon application Java?
Réponses
Trop de publicités?La réponse courte
Utilisez l'une de ces deux méthodes:
Par exemple:
InputStream inputStream =
YourClass.class.getResourceAsStream("image.jpg");
--
La réponse longue
Typiquement, on n'aurait pas envie de charger des fichiers à l'aide des chemins absolus. Par exemple, ne le faites pas si vous pouvez l'aider:
File file = new File("C:\\Users\\Joe\\image.jpg");
Cette technique n'est pas recommandée pour au moins deux raisons. Tout d'abord, il crée une dépendance sur un système d'exploitation particulier, ce qui empêche l'application de facilement passer à un autre système d'exploitation. L'un de Java principaux avantages est la possibilité d'exécuter le même code binaire sur de nombreuses plates-formes différentes. En utilisant un chemin absolu comme ceci rend le code beaucoup moins portable.
Deuxièmement, en fonction de l'emplacement relatif du fichier, cette technique pourrait créer une dépendance externe et de limiter la demande de mobilité. Si le fichier existe en dehors de l'application du répertoire courant, ce qui crée une dépendance externe et il faut être conscient de la dépendance pour déplacer l'application vers une autre machine (des erreurs).
Au lieu de cela, utilisez l' getResource()
méthodes dans l' Class
classe. Cela rend l'application beaucoup plus portable. Il peut être déplacé dans différentes plates-formes, des machines ou des répertoires et fonctionnent toujours correctement.
getResource est bien, mais à l'aide de chemins d'accès relatifs fonctionnera tout aussi bien, aussi longtemps que vous pouvez contrôler où est votre répertoire de travail (que vous pouvez généralement).
En outre, la plate-forme de dépendance concernant le caractère séparateur peut être contourné en utilisant un Fichier.séparateur, Fichier.separatorChar, ou Système.getProperty("fichier.séparateur").
De quoi êtes-vous le chargement des fichiers de configuration ou de données (comme un fichier d'entrée) ou comme une ressource?
- Si en tant que ressource, suivre la suggestion et de l'exemple donné par la Volonté et Justin
- Si la configuration, vous pouvez utiliser un ResourceBundle ou de Printemps (si votre configuration est plus complexe).
- Si vous avez besoin de lire un fichier dans le but de traiter les données à l'intérieur, cet extrait de code peut aider
BufferedReader file = new BufferedReader(new FileReader(filename))
, puis de lire chaque ligne du fichier à l'aide d'file.readLine();
N'oubliez pas de fermer le fichier.
Je n'ai pas eu un problème à l'aide de style unix, séparateurs de chemin, même sous Windows (même si il est de bonne pratique pour vérifier un Fichier.separatorChar).
La technique de l'utilisation du chargeur de classe.getResource() est le meilleur pour lire uniquement les ressources qui vont être chargés à partir des fichiers JAR. Parfois, vous pouvez déterminer par programme le répertoire de l'application, ce qui est utile pour l'administration configurable des fichiers ou des applications de serveur. (Bien sûr, modifiable par l'utilisateur fichiers doivent être stockés quelque part dans le Système.getProperty("user.home") répertoire.)