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

Entrée/Sortie Java Discussion :

Problème de lecture d'un fichier texte dans un répertoire du projet


Sujet :

Entrée/Sortie Java

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut Problème de lecture d'un fichier texte dans un répertoire du projet
    Bonjour à tous j'aimerais lire un fichier txt qui se trouve dans le répertoire connexion_bd dans le répertoire src voilà ma classe:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    package connexion_bd;
     
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
     
    public class Parametre_Connection {
    	private String ip;
    	private String bd_name;
    	private String user_name;
    	private String password;	
    	public Parametre_Connection(String source) throws IOException {		 
    			  String ligne=null ;
    			  String[] parm=null;
    			    /*try {		      
    			    	//File file=new File(source);
    			      BufferedReader fichier = new BufferedReader(new FileReader(source));
    			      while ((ligne = fichier.readLine()) != null) {
    			    	  parm=ligne.split(";");
    			      }			      
    			      fichier.close();			      
    			    } catch (Exception e) {
    			      e.printStackTrace();
    			    }  			    
    			    setIp(parm[0]);
    			    setBd_name(parm[1]);
    			    setUser_name(parm[2]);
    			    setPassword(parm[3]);		*/
    			  InputStream input=ClassLoader.getSystemResourceAsStream(source);
    			  BufferedReader bf=new BufferedReader(new InputStreamReader(input));
    		      while ((ligne = bf.readLine()) != null) {
    		    	  parm=ligne.split(";");
    		      }			      
    		      bf.close();
    			    setIp(parm[0]);
    			    System.out.println(getIp());
    			    setBd_name(parm[1]);
    			    System.out.println(getBd_name());
    			    setUser_name(parm[2]);
    			    System.out.println(getUser_name());
    			    setPassword(parm[3]);
    			    System.out.println(getPassword());
    	}		
    	public String getIp() {
    		return ip;
    	}
    	public void setIp(String ip) {
    		this.ip = ip;
    	}
    	public String getBd_name() {
    		return bd_name;
    	}
    	public void setBd_name(String bd_name) {
    		this.bd_name = bd_name;
    	}
    	public String getUser_name() {
    		return user_name;
    	}
    	public void setUser_name(String user_name) {
    		this.user_name = user_name;
    	}
    	public String getPassword() {
    		return password;
    	}
    	public void setPassword(String password) {
    		this.password = password;
    	}
    	public static void main(String[]args) throws IOException{
    		Parametre_Connection p=new Parametre_Connection("/connexion_bd/parametres_connexion_bd.txt");
    	}
    }
    et voilà l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Exception in thread "main" java.lang.NullPointerException
    	at java.io.Reader.<init>(Unknown Source)
    	at java.io.InputStreamReader.<init>(Unknown Source)
    	at connexion_bd.Parametre_Connection.<init>(Parametre_Connection.java:33)
    	at connexion_bd.Parametre_Connection.main(Parametre_Connection.java:72)
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  2. #2
    Membre expérimenté Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 512
    Points : 1 656
    Points
    1 656
    Par défaut
    Bonjour,

    Simplement que le fichier n'est pas trouvé. Il faut mettre le path complet de ton fichier en paramètre je pense.
    Si la réponse vous convient, un petit ça encourage.
    Avant tout nouveau post, pensez à : la FAQ, Google et la fonction Recherche
    Si vous devez poster, pensez à: Ecrire en français, la balise [CODE] (#) et surtout

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Le problème c'est que je veux générer le .jar si je le fais qu'on exécute sur une machine à l'autre qu'est ce qui vas se passer si le fichier n'est pas dans le même répertoire où si on change de répertoire?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  4. #4
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Ton chemin est incorrect : les fonctions getResource() de ClassLoader n'acceptent pas de "/" en début de chaine. Elle attentent toujours un chemin complet.
    Donc je dirais que le chemin devrait être "connexion_bd/parametres_connexion_bd.txt" (sans / initial)

    En fait ce sont les méthodes getResource() de Class qui acceptent les "/" en début de chaine pour les chemins complets, car ces dernière prennent par défaut un chemin relatif...


    Sinon quelques remarques :
    • Les ressources ne sont pas fermées correctement (comme dans 90% des messages du forum).
      Il faut utiliser un try/finally ou le try-with-resource de Java 7...
    • Tu récupères uniquement les informations de la dernière ligne du fichier, séparé par des point-virgules.
      Non seulement le fichier ne doit pas être évident à lire, mais le risque d'erreur lors de la saisie est important.

      Un fichier Properties serait plus simple à gérer...


    a++

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    En passant mon fichier possède une seule ligne. Sinon comment gérer les fichiers Properties?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Un fichier properties est un fichier dont l'extension est .properties, donc chaque ligne correspond à une propriété sous le forme nom=valeur; ou nom:valeur (on peut mettre des commentaires en mettant # au début de la ligne). Il y a également un format xml supporté.

    Par exemple :

    truc = 123
    bidule = xxxx
    # commentaire ...
    Et pour lire un tel fichier, et lire les propriétés :

    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
    private void exempleLectureProperties()  throws IOException {
    	Properties properties = readProperties(getClass().getClassLoader(), tonPath );
    	String propertyTruc = properties.getProperty("truc"); // lecture de la propriété de nom truc
     
           ...
     
    }
     
    private Properties readProperties(ClassLoader classLoader, String path) throws IOException {
     
        Properties properties = new Properties();
        try( InputStream inputStream = classLoader.getResourceAsStream(path) ) {
    	properties.load(inputStream);
        }
        return properties;
     
    }
    Pour en savoir plus :

    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    merci ta solution me conviens bien cependant j'aimerais crypter mon fichier pour empêcher que quelqu'un puisse l'ouvrir pour modifier son contenu. Ou bien c'est pas lapeine car ce système protège déjà le contenu u fichier?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  8. #8
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par junior222 Voir le message
    merci ta solution me conviens bien cependant j'aimerais crypter mon fichier pour empêcher que quelqu'un puisse l'ouvrir pour modifier son contenu. Ou bien c'est pas lapeine car ce système protège déjà le contenu u fichier?
    Pourquoi crypter le fichier ?
    Si c'est pour sécuriser la connexion tu as un gros problème de sécurité devant toi, car cela ne fera que rendre le lecture plus difficile mais pas impossible...


    a++

  9. #9
    Membre expérimenté Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 512
    Points : 1 656
    Points
    1 656
    Par défaut
    Bonjour

    Si tu veux juste que personne ne modifie ton fichier, empêche le droit d'écriture dessus.
    Avec un setReadOnly() ou un setReadable(), tu dois pouvoir t'en sortir.
    Si la réponse vous convient, un petit ça encourage.
    Avant tout nouveau post, pensez à : la FAQ, Google et la fonction Recherche
    Si vous devez poster, pensez à: Ecrire en français, la balise [CODE] (#) et surtout

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    setReadable() dans un jar ?
    En plus, n'importe qui aurait le réflexe de rajouter le droit en écriture sur le fichier, puis réessayer....
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre expérimenté Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 512
    Points : 1 656
    Points
    1 656
    Par défaut
    Effectivement, je ne pensais pas à ça.
    Et au niveau des droits, sur n'importe quel système, tu peux bloquer l'accès en écriture et empêcher la modification de ces mêmes droits.
    Si la réponse vous convient, un petit ça encourage.
    Avant tout nouveau post, pensez à : la FAQ, Google et la fonction Recherche
    Si vous devez poster, pensez à: Ecrire en français, la balise [CODE] (#) et surtout

  12. #12
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Finalement je retiens quelle solution pour mon problème de sécurité?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  13. #13
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Ben il faudrait déjà savoir ce que tu veux faire exactement, et pourquoi tu voudrais crypter ce fichier ?


    Si l'application est déployé chez des clients, et qu'elles se connecte à distance sur une BDD avec un login/password que ces mêmes client ne doivent pas connaitre alors c'est ton architecture qu'il faut revoir.



    a++

  14. #14
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par nchal Voir le message
    Et au niveau des droits, sur n'importe quel système, tu peux bloquer l'accès en écriture et empêcher la modification de ces mêmes droits.
    Malgré mes doutes je ne peux pas jurer qu'il n'y a rien de ce genre sous Windows.
    Mais sur mes linux, non customisés, aucun programme ne peut m'empêcher de modifier des fichiers qui m'appartiennent. Ni créer de fichier qui ne m'appartienne pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Ce que j'aimerais faire c'est de créer un fichier licence pour mon application qui sera sur les postes clients avec l'application. Lorsqu'on lance l'application il décrypte le fichier lis les informations et crypte à nouveau. Bref voilà ce que j'ai fais. Est-ce optimal?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  16. #16
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    pourquoi crypter à nouveau?? Ca n'a pas de sens.

    Pour un fichier de licence, en "général", on utilise des variantes de la méthode suivante:


    Ton programme contient la logique pour vérifier qu'une licence est valide (vérifier la date, le nom de l'utilisateur par exemple, etc).
    Cette licence est stockée dans un fichier qui est crypté avec une clé asymétrique.
    La clé de déchiffrement publique se trouve dans ton programme et n'a pas vraiment de raison d'être protégée contre la lecture
    La clé de chiffrement privée se trouve seulement chez toi, l'éditeur, et sert à créer de nouvelle licence. Elle doit absolument rester chez toi uniquement

    ainsi:

    si on n'arrive pas à déchiffre le fichier -> la licence est invalide
    si les données déchiffrée ne correspondent pas -> la licence est invalide
    si l'utilisateur tente de modifier le fichier lui même -> il n'a pas la clé privée, donc ne peut pas chiffrer valablement le fichier -> donc retour au point 1


    Bien sûr, ce sont là les base, après il y a le problème de s'assurer par exemple que la clé publique dans le programme n'a pas été altérée, que la couche de validation du programme n'a pas été altérée, etc. Tout ça est une lutte qui ne s'arrête que lorsqu'il y a équilibre entre l'énergie que l'éditeur est prêt à dépenser dans la protection et la demande de logiciel piraté

  17. #17
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Ok mon code crypte et decrypte avec la même clé je peux avoir un exemple de code de cryptage asymétrique svp?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  18. #18
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    je n'en ai pas sous le coude, mais fais des recherches d'exemple en java sur l'utilisation du RSA par exemple.

Discussions similaires

  1. [WIN32]problème de Lecture d'un fichier texte
    Par jesus144 dans le forum Windows
    Réponses: 14
    Dernier message: 23/02/2007, 11h40
  2. problème de lecture depuis un fichier texte
    Par [Hugo] dans le forum C++
    Réponses: 12
    Dernier message: 27/10/2006, 16h46
  3. [VBnet] Problème de lecture d'un fichier texte.
    Par dibeloni dans le forum Windows Forms
    Réponses: 3
    Dernier message: 31/03/2006, 19h12
  4. Réponses: 2
    Dernier message: 28/12/2005, 15h00
  5. Lecture d'un fichier texte dans un projet TOMCAT
    Par brice_nice dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 03/07/2005, 15h04

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