72 votes

Comment dois-je charger des fichiers dans mon application Java?

Comment dois-je charger des fichiers dans mon application Java?

56voto

Will Points 1002

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.

10voto

Mike Stone Points 21293

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").

8voto

Vinnie Points 3297

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.

3voto

McDowell Points 62645

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.)

2voto

cibercitizen1 Points 3093
public byte[] loadBinaryFile (String name) {
    try {

        DataInputStream dis = new DataInputStream(new FileInputStream(name));
        byte[] theBytes = new byte[dis.available()];
        dis.read(theBytes, 0, dis.available());
        dis.close();
        return theBytes;
    } catch (IOException ex) {
    }
    return null;
} // ()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X