5 votes

Comment créer un dossier dans eclipse pour stocker les objets sérialisés ?

Je veux sérialiser certains objets dans mon code Java. Je ne veux pas le mettre dans un dossier quelconque sur le disque dur. Je veux qu'il soit à l'intérieur d'un DOSSIER dans le dossier de mon projet Eclipse. Comment puis-je créer ce dossier et y stocker mes objets ?

Est-ce une bonne pratique ? Y aura-t-il un problème si j'essaie de créer un JAR autonome à partir de ce projet ?

6voto

Michał Ziober Points 5787

Le code source ci-dessous montre comment créer un sous-dossier dans le répertoire courant :

import java.io.File;

public class SourceCodeProgram {

    public static void main(String argv[]) throws Exception {
        File currentFolder = new File(".");
        File workingFolder = new File(currentFolder, "serialized");
        if (!workingFolder.exists()) {
            workingFolder.mkdir();
        }
        System.out.println(workingFolder.getAbsolutePath());
    }
}

Lorsque vous exécutez ce code source et rafraîchissez le projet Eclipse, vous devriez voir serialized dans la structure du projet Eclipse. Vous pouvez maintenant l'utiliser et y stocker tous les fichiers.

Dans mon application, lorsque je veux stocker certaines données sur le disque dur, j'utilise toujours la recommandation de l'utilisateur. Je crée application.properties qui contient la clé :

working.folder=/example/app-name

L'application lit ce fichier au début et crée ce dossier si elle en a besoin. La deuxième solution peut être le "paramètre de l'application". Lorsque je n'ai besoin que d'un ou deux paramètres de la part des utilisateurs, je les lis depuis la ligne de commande. Par exemple, un utilisateur lance mon application en utilisant cette commande :

java -jar app.jar -dir /example/app-name

Si l'utilisateur ne fournit pas de dossier, j'utilise le dossier par défaut. répertoire actuel .

des liens utiles :

3voto

Himanshu Bhardwaj Points 1728

Cela dépend des informations que possèdent ces objets sérialisables.

De même, si vous voulez avoir un dossier à l'intérieur de votre codebase (mais déployé en tant que dossier uniquement), vous pouvez écrire du code, pour écrire ou lire des fichiers :

URL dir_url = ClassLoader.getSystemResource(dir_path);
// Turn the resource into a File object
File dir = new File(dir_url.toURI());
// List the directory
String files = dir.list()

Le répertoire Note doit être dans le classpath.

3voto

Ben Barkay Points 2116

Des pas :

  1. Cliquez avec le bouton droit de la souris sur le dossier de votre projet dans l'explorateur de paquets.
  2. Localisez l'élément de menu "Nouveau" et survolez-le.
  3. Localisez "Dossier" dans le menu ouvert et cliquez dessus.
  4. Donnez un nom à votre dossier
  5. Cliquez sur le bouton "Terminer" en bas.

Cela créera un dossier qui devrait être accessible à partir de votre répertoire de travail lors de l'exécution à partir d'eclipse.

C'est une mauvaise idée de manipuler des fichiers qui se trouvent dans le fichier JAR pendant l'exécution. Imaginez un scénario dans lequel deux JVM ou plus exécutent le même JAR. Cela signifie également qu'elles travaillent avec les mêmes fichiers et que la lecture/écriture de ces fichiers peut provoquer des collisions. Vous voudrez généralement séparer ces fichiers les uns des autres.

Donc, à moins que ces fichiers ne soient en lecture seule, vous ne devez pas les inclure dans votre JAR (sinon, tout va bien).

2voto

skirsch Points 1430

Ne vaut-il pas mieux écrire dans le répertoire de l'utilisateur, par exemple dans un sous-dossier du type .myApp/ ?

Vous feriez quelque chose comme ceci pour configurer/initialiser le répertoire :

File userDir = new File(System.getProperty("user.home"));
File storageDir = new File(userDir, ".myApp");
if (!storageDir.exists())
    storageDir.mkdir();
// store your file in storageDir

Jetez un coup d'œil aquí pour savoir où userDir est généralement situé (bien que vous ne deviez pas nécessairement vous en soucier).

2voto

janos Points 22603

Si vous lancez votre programme dans Eclipse, le répertoire de travail actuel du processus sera par défaut le répertoire racine du projet. Vous pouvez alors initialiser et utiliser un répertoire nommé serialized dans le Root de votre projet comme ceci :

File serializedDir = new File("serialized");
if (!serializedDir.exists()) {
    serializedDir.mkdir();
}

Les chemins relatifs dans votre code seront relatifs au répertoire de travail, qui est la racine du projet par défaut. Vous pouvez changer le répertoire de travail par défaut dans la configuration du lanceur.

Cela dépend de votre projet si c'est une bonne solution ou non. Si vous ne voulez pas ou n'avez pas besoin de partager les objets sérialisés avec d'autres, je ne vois rien de mal à cela.

Lorsque vous utilisez la fonction d'exportation d'Eclipse pour créer un jar à partir du projet, n'oubliez pas que le dossier sera sélectionné par défaut. Vous devez le désélectionner explicitement pour l'exclure du jar (dans tous les cas, il est préférable d'utiliser Maven ou Ant pour générer des jars plutôt qu'Eclipse, que vous ne devez configurer qu'une fois, donc pas de crainte que le répertoire soit inclus par accident).

Vous souhaitez probablement aussi exclure le répertoire du contrôle de version.

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