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 :

Fichier texte et tableau


Sujet :

Entrée/Sortie Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Points : 5
    Points
    5
    Par défaut Fichier texte et tableau
    Bonjour à tous,

    Je débute totalement dans la programmation Java alors j'espère que vous pourrez me conseiller car là je tourne en rond !

    J'ai un fichier contenant des noms par ligne, exemple :
    durant
    dupond
    thierry
    bernard

    Je souhaite ouvrir ce fichier texte, le lire et comparer ces données au login Windows (System.getProperty("user.name")).

    Si le login windows se trouve dans le fichier texte, on ouvre l'application sinon on la ferme.

    Je pensais faire de cette manière, mais c'est bien là le problème je n'y arrive pas !

    1- ouverture du fichier
    2- on compte le nombre de ligne(nbLigne) du fichier
    3- on créé un tableau de String de longueur nbLigne. (mon problème actuel se situe là)
    3- on parcourt le fichier et on insère chaque donnée de ligne dans le tableau créé
    4- on reparcourt ce tableau créé en comparant cette fois avec le login Windows.
    5- on ouvre l'application (ou pas) si on trouve le login.

    Il y a surement plus simple à faire et dans ce cas, je suis tout ouï !

    Merci à ceux qui m'aiguilleront !

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Est-ce nécessaire toutes ses étapes ? (garder en mémoire la liste du fichier etc...)

    Pourquoi ne pas faire tout simplement :

    1- ouverture du fichier
    2- on parcourt le fichier et on vérifie que la ligne lue contient ou non le nom du user. (on arrête directement la boucle si trouvé).
    3- on ouvre l'application (ou pas) si on trouve le login.

    Sinon pour le genre de probleme lire le nbr de ligne puis creer un tableau du nombre de ligne c'est un peu long. Crée un liste (arraylist ou autre) dans laquelle tu rajouteras ce que tu ligne (donc tu n'as plus besoin de compter le nbr de ligne a l'avance...)
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Re,

    J'ai trouvé une solution pour mon problème (avec intégration d'un bouléen).
    Ce code peut sûrement être perfectionné, donc n'hésitez pas à me le dire!

    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
    package application;
     
    import java.io.IOException;
    import java.io.FileReader;
    import java.io.BufferedReader;
    import java.io.FileWriter;
    import java.io.BufferedWriter;
     
    import javax.swing.ImageIcon;
    import javax.swing.JOptionPane;
     
    public class Fichier
    {
    	// Déclaration des variables
    	private String fichier = "agent/agent.txt";
    	JOptionPane jop1, jop2;
    	private String line = "";
    	private int nbLigne = 0;
    	private String userName = System.getProperty("user.name");
    	boolean trouve = false;
     
    	public Fichier()
    	{
    		try
    		{
    			// On ouvre le fichier en lecture
    			BufferedReader buff = new BufferedReader(new FileReader(fichier));
    			try 
    			{
    				// on parcourt le fichier tant qu'une ligne existe et que le booléen est faux
    				while ((line = buff.readLine()) != null && trouve == false)
    				{
    					// si on trouve le userName
    					if (line.equals(userName))
    						trouve = true; // booleen devient "vrai"
    					nbLigne++;
    				}		
     
    				// booléen vrai = user trouvé
    				if (trouve == true)
    				{
    					jop1 = new JOptionPane();
    					ImageIcon img = new ImageIcon("Icones/Info.png");
    					jop1.showMessageDialog(null, "Bienvenue dans l'application !\n Vous êtes logués sous : "+ userName, "Bienvenue !", JOptionPane.INFORMATION_MESSAGE, img);
    				}
    				// sinon message de non autorisation
    				else
    				{
    					jop2 = new JOptionPane();
    					ImageIcon img = new ImageIcon("Icones/erreur.png");
    					jop2.showMessageDialog(null, "Vous n'êtes pas autorisé à utiliser cette application !!", "Erreur !", JOptionPane.WARNING_MESSAGE, img);
    					System.exit(0);
    				}
    			} 
    			finally 
    			{
    				// on ferme notre fichier
    				buff.close();
    			}
    		}
    		catch (IOException ioe)
    		{
    			System.out.println(ioe.toString());
    		}
    	}
    }

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Ca a ma l'air mieux a premiere vue. Tu px éventuellement utiliser aussi cette forme pour sortir de la boucle mais ce que tu as fait est juste aussi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while ((line = buff.readLine()) != null)
    				{
    					// si on trouve le userName
    					if (line.equals(userName))
    {
    						trouve = true; // booleen devient "vrai"
    break;
    }
    				}
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif Avatar de fastdeath124
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Août 2011
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Août 2011
    Messages : 117
    Points : 200
    Points
    200
    Par défaut
    C'est une bonne solution et ça devrait marcher normalement, mais tu peux l'améliorer un peu:

    1- La variable booléenne n'est pas utile, il suffit d'utiliser "break;" ce qui permettra de sortir de la boucle sans faire un test à chaque itération pour connaitre sa valeur.
    2- Au lieu de compter le nombre de lignes, je te conseille d'utiliser une structure dynamique (par exemple ArrayList dans lequel il est possible d'ajouter à la fin sans même savoir l'indice d'ajout)

  6. #6
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Merci à vous 2 pour vos commentaires.

    1- La variable booléenne n'est pas utile, il suffit d'utiliser "break;" ce qui permettra de sortir de la boucle sans faire un test à chaque itération pour connaitre sa valeur.
    Je ne vois pas comment ne pas utiliser le booléen malheureusement, car sans le booléen, comment dire au programme d'utiliser le 1er ou le 2eme message ?


    On initialise le booléen à faux.
    Début de boucle.
    Si le string = userName, booléen devient vrai et on arrête la boucle (break);
    sinon on continue
    Fin de boucle

    Si le booléen est vrai, alors message d'accueil
    sinon message de refus.

  7. #7
    Membre actif Avatar de fastdeath124
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Août 2011
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Août 2011
    Messages : 117
    Points : 200
    Points
    200
    Par défaut
    A la fin de la boucle "while", au lieu de tester sur la variable booléenne (if trouve==true), tu peux faire le test suivant:
    - if(line ==null){...} : c'est le cas équivalent à trouve==false car si aucun résultat n'a été trouvé, line contiendra la valeur "null" retournée par readLine()
    - if(line !=null){...} : c'est le cas équivalent à trouve==true

  8. #8
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Oui c'est une solution aussi ca.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    OK, effectivement ca fonctionne aussi ! Merci beaucoup !

Discussions similaires

  1. [VS 2005 PPC]Fichier texte vers tableau
    Par dureiken dans le forum Visual Studio
    Réponses: 0
    Dernier message: 14/05/2011, 15h17
  2. Réponses: 2
    Dernier message: 01/10/2009, 15h39
  3. écriture d'un fichier texte dans tableau
    Par minola dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 29/11/2007, 17h42
  4. Fichier texte et tableau
    Par Ella68 dans le forum Flash
    Réponses: 2
    Dernier message: 07/06/2007, 12h17
  5. mettre un fichier .texte en tableau
    Par cooler007 dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 28/05/2006, 23h39

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