IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Ecrire fichier dans un jar


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Par défaut Ecrire fichier dans un jar
    Bonjour,

    j'aimerais savoir s'il est possible d'ecrire un fichier dans un jar (si possible celui qui est executé)

    le but de cette demande est, en gros, de pouvoir ecrire un fichier contenant certaines données sensibles de l'application, comme des mots de passe etc...

    vu que mon appli est portable, je ne passe plus par les bases de registres (ce que je faisais avant uniquement sous windows).

    Voila une idée, si c'est possible bien sur

    a vot' bon coeur

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant
    Inscrit en
    Avril 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2006
    Messages : 92
    Par défaut
    tu peux considerer ton jar comme un zip...

    tu peux donc utiliser les class en rapport pour ajouter, supprimmer, mettre à jour des fichiers ....

    C'est pas trop securiser de stocker des mots de passe dans le jar, ni meme dans la base de registre...

    Voilou !

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 277
    Par défaut
    Sinon, au cas où, tu as la classe Preferences qui te permet de stocker des infos de ton application selon l'OS.
    Sous Windows ce sera la base de registre, sous d'autres OS ça pourrait être un fichier.
    Ce serait donc portable.

  4. #4
    Membre éclairé Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Par défaut
    Citation Envoyé par fr1man Voir le message
    Sinon, au cas où, tu as la classe Preferences qui te permet de stocker des infos de ton application selon l'OS.
    Sous Windows ce sera la base de registre, sous d'autres OS ça pourrait être un fichier.
    Ce serait donc portable.
    j'avais vu ca, mais pour le coup..y a pas d'infos que les autre os...et pour windows...ca implique que java soit bien installer sur l'os je crois, or moi, je fournis un jre avec mon appli, il est pas forcément installer dans les regles de l'art...

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 277
    Par défaut
    Ben j'ai déjà testé sous Mac os x, et ce sont des fichiers qui sont utilisés.

    A partir du moment où tu fournis une JRE avec ton application, il ne devrait pas y avoir de problème, il me semble, non ?

  6. #6
    Membre éclairé Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Par défaut
    Citation Envoyé par fr1man Voir le message
    Ben j'ai déjà testé sous Mac os x, et ce sont des fichiers qui sont utilisés.

    A partir du moment où tu fournis une JRE avec ton application, il ne devrait pas y avoir de problème, il me semble, non ?
    aucune idée..mais bon a choisir je prefere l'ecrire moi meme le fichier...

    j'utiliser les Properties (ca revient au meme) et je l'insère dans le jar

    mes utilisateurs n'ont pas le "level" pour ouvrir un jar...

    mais sinon...autres methodes ?

  7. #7
    Membre éclairé Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Par défaut
    Citation Envoyé par ITCsoft54 Voir le message
    tu peux considerer ton jar comme un zip...

    tu peux donc utiliser les class en rapport pour ajouter, supprimmer, mettre à jour des fichiers ....

    C'est pas trop securiser de stocker des mots de passe dans le jar, ni meme dans la base de registre...

    Voilou !
    le fait que le jar soit en execution ne pose pas de probleme pour l'ecriture ?

    mon application ne necessite pas une grosse securité, c'est juste pour eviter que les utilisateurs effacent les données...

    mais sinon que peux tu me conseiller comme manière de faire, sachant qu'on peut considérer qu'il n'y a pas de connexion net...????

  8. #8
    Membre confirmé
    Homme Profil pro
    Consultant
    Inscrit en
    Avril 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2006
    Messages : 92
    Par défaut
    pour ce qui es de l'ecriture pendant l'execution sa ne devrait pas poser de probleme du moment ou tu ne touche pas au .class lu.

    pour ce qui est du mot de passe tu peux faire en sorte que le mot de passe ne soit pas en "claire". par exemple tu fait ajoute decale de 5 la representation de tes caratères. Apres tu peux garder le mot de pass en claire mais dans ce cas pourquoi demander un mot de pass ?

  9. #9
    Membre éclairé Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Par défaut
    Citation Envoyé par ITCsoft54 Voir le message
    pour ce qui es de l'ecriture pendant l'execution sa ne devrait pas poser de probleme du moment ou tu ne touche pas au .class lu.

    pour ce qui est du mot de passe tu peux faire en sorte que le mot de passe ne soit pas en "claire". par exemple tu fait ajoute decale de 5 la representation de tes caratères. Apres tu peux garder le mot de pass en claire mais dans ce cas pourquoi demander un mot de pass ?
    ah non mais le mot de passe sera encrypté comme il faut...et pas décryptable (la dessus pas de soucis) je veux juste "planquer" le fichier pour qu'il ne soit pas accessible de tout le monde

  10. #10
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Piolet Voir le message
    le fait que le jar soit en execution ne pose pas de probleme pour l'ecriture ?
    Il me semble que cela peut poser des problèmes sous Windows, car le fichier ne pourra pas être modifier s'il est lu en même temps par la JVM...


    Citation Envoyé par Piolet Voir le message
    j'avais vu ca, mais pour le coup..y a pas d'infos que les autre os...et pour windows...ca implique que java soit bien installer sur l'os je crois, or moi, je fournis un jre avec mon appli, il est pas forcément installer dans les regles de l'art...
    Normalement les Preferences fonctionnent pour tous les OS et quelque soit le mode d'installation...
    Par contre le gros défaut à mon avis c'est que tu ne maitrises pas forcément l'emplacement des données...


    Citation Envoyé par Piolet Voir le message
    mais sinon que peux tu me conseiller comme manière de faire, sachant qu'on peut considérer qu'il n'y a pas de connexion net...????
    Perso j'utiliserais le répertoire HOME pour stocker les fichiers de config de l'utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    	public static File getConfigDirectory(String applicationName) throws FileNotFoundException {
    		String userHome = System.getProperty("user.home") + File.separator + "." + applicationName;
    		File dir = new File(userHome);
     
    		if (!dir.isDirectory()) {
    			// Si ce n'est pas un répertoire valide :
    			// On tente de créer le répertoire :
    			if (!dir.mkdirs()) {
    				// Si le répertoire n'a pas pu être créé
    				// On remonte une exception :
    				throw new FileNotFoundException("Directory " + dir);
    			}
    		}
    		return dir;
    	}
    Avec applicationName == "test" cela renverrai quelque chose du style :

    Perso j'utiliserai deux fichiers properties :
    • C:\Documents and Settings\login\.test sous les Windows
    • /home/login/.test sous les Unix...


    Le répertoire Docs&Setting n'est généralement pas consulté par les utilisateurs, et les répertoires commençant par un . sont caché sous Unix, et c'est ce qui est généralement utilisée pour stocker les fichiers de config
    Normalement sous Windows 2000/XP et supérieur il faudrait plutôt utiliser C:\Documents and Settings\login\Application Data\.test mais ce n'est pas gênant...


    Ce que tu peux faire également c'est d'utiliser un double fichier properties :
    • Un à l'intérieur du jar qui contiendra les données par défaut (et donc en lecture seule)
    • Le second dans le "user.home" qui contiendra les valeurs redéfini par l'utilisateur (et donc modifiable)


    Ce qui donnerait tout simplement à la lecture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    	// Création de l'objet Properties :
    	Properties properties = new Properties();
     
    	// On charge le fichier dans le jar qui contient les données par défaut :
    	InputStream in = Main.class.getResourceAsStream("fichier.properties");
    	try {
    		properties.load(in);
    	} finally {
    		in.close();
    	}
     
    	// On charge le fichier du compte utilisateur :
    	File confFile = new File(getConfigDirectory("tonapps"), "fichier.properties");
    	in = new FileInputStream(confFile);
    	try {
    		properties.load(in);
    	} finally {
    		in.close();
    	}
    Si le second fichier comporte des clef identique au premier, leurs valeurs seront écrasé


    a++

  11. #11
    Membre éclairé Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Par défaut
    ok merci, je garde cette option sous le bras, elle me parait pas mal

  12. #12
    Membre confirmé
    Homme Profil pro
    Consultant
    Inscrit en
    Avril 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2006
    Messages : 92
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,

    Il me semble que cela peut poser des problèmes sous Windows, car le fichier ne pourra pas être modifier s'il est lu en même temps par la JVM...
    Pas sur, à verifier. Je crois que sa reste possible (je suis quasi sur pour un appli non applet) si j'ai le temps je posterai un bout de code le fesant.

Discussions similaires

  1. inclure des fichiers dans un .jar
    Par cysboy dans le forum Multimédia
    Réponses: 3
    Dernier message: 11/09/2006, 14h56
  2. Réponses: 7
    Dernier message: 02/09/2006, 18h49
  3. [JAR]Modification de fichier dans un jar
    Par vberetti dans le forum Général Java
    Réponses: 14
    Dernier message: 13/06/2005, 18h56
  4. [JAR] lire un fichier dans un jar OU hors d'un jar
    Par yveslamand dans le forum Général Java
    Réponses: 13
    Dernier message: 25/04/2005, 15h38
  5. [JAR] Accéder à un fichier dans un jar
    Par Nanoua dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 06/07/2004, 14h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo