Comment une application peut-elle utiliser des fichiers à l'intérieur du pot pour lire et écrire?
j'ai besoin de stocker des données dans les fichiers à l'intérieur .jar fichier et le lire à nouveau.
je sais que je peux utiliser Class.getResourceAsStream()
méthode mais il retourne un InputStream
que je peux lire à partir. Mais je cherche un moyen d'écrire .
5 réponses
j'ai besoin de stocker des données dans les fichiers à l'intérieur .jar fichier et le lire à nouveau
Non.
au lieu de stocker le fichier' default ' dans le Jar. S'il est modifié, conservez le fichier modifié à un autre endroit. Un lieu commun est un sous-répertoire de user.home
. Lors de la vérification des fichiers, vérifiez d'abord l'existence d'une altération de fichier sur le système de fichiers, et si elle n'existe pas, chargez le fichier par défaut.
il est généralement préférable de décrire l'objectif plutôt que la stratégie. "Enregistrer le fichier modifié dans le Bocal' est une stratégie, alors que le "Enregistrer les préférences entre les courses' pourrait être le but.
Related: qu'est-Ce que le XY problème?
ce n'est pas vraiment supporté. En principe, vous pouvez utiliser le fichier jar, mais il n'y a aucune garantie que le nouveau contenu soit correctement chargé. Laissez vos outils de construction gérer le fichier jar -- et choisissez autre chose pour le stockage persistant géré par votre programme lui-même. Comme un fichier.
il est peu probable que vous puissiez changer un bocal chargé en toute sécurité. Le changer alors qu'il est utilisé n'est pas une bonne idée.
Si vous voulez pour ce faire, utilisez un simple répertoire système de fichier et ajouter/supprimer des fichiers. Même cela peut ne pas fonctionner comme prévu.
vous pouvez manipuler n'importe quel fichier jar en utilisant le paquet java.util.jar
(ou tout simplement java.util.zip
). Comme les fichiers à l'intérieur d'un pot seront compressés, ce n'est pas le moyen le plus time efficace pour vous de stocker des données.
vous devriez probablement utiliser un répertoire ailleurs (par exemple System.getProperty("user.home") + "/.myProgram"
) ou voir java.util.prefs
.
Class.getResource()
renvoie une URL. Théoriquement, vous pouvez utiliser cette URL pour créer vos InputStream
et OutputStream
. Mais dans la plupart des cas, le JAR généré est un fichier en lecture seule (ou une archive). Ainsi, votre application pourrait trébucher en essayant de l'utiliser.