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

avec Java Discussion :

Write to File + Relative Timestamp


Sujet :

avec Java

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 18
    Par défaut Write to File + Relative Timestamp
    Bonjour,

    Je suis un développeur débutant, je dois écrire un programme qui permet d'écrire dans fichier caratere par caractere la chaine de caractere tapée au clavier. il faut noter que chaque caractere doit etre dans chaque ligne + Relatives Times stamp.

    Example : Chaine de Caratere tapée par l'utilisateur : Bonjour

    Fichier Correspondant contient :

    1 B 17h31m01s
    2 o 17h31m03s
    3 n etc
    4 j
    5 o
    6 u
    7 r

    PS: La boucle for (ainsi que la boucle While) ne fonctionne pas dans la fonction ecrire fichier

    Voici mon programme : Profile.java

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    import java.io.*;
     
    public class Profile
    {
    public static String lireString()
    {
    String ligne_lue=null;
    try
    {
    InputStreamReader lecteur=new InputStreamReader(System.in);
    BufferedReader entree=new BufferedReader(lecteur);
    ligne_lue=entree.readLine();
    }
    catch(IOException err)
    {
    System.exit(0);
    }
    return ligne_lue;
    }
     
     
     
    public static void ecrireFichier(String path, String text)
    {
    PrintWriter ecri ;
    try
    {
    ecri = new PrintWriter(new FileWriter(path));
     
    for (int i=1; i<text.length; i++)
    {
    String letter = text.substring(0, i);
    ecri.println(letter);
    text = text.substring(i+1);
    }
     
     
    ecri.flush();
    ecri.close();
    }
    catch (NullPointerException a)
    {
    System.out.println("Erreur : pointeur null");
    }
    catch (IOException a)
    {
    System.out.println("Problème d'IO");
    }
    }
     
    public String lireFichier (String path)
    {
    BufferedReader lect ;
    String tmp = "";
    try
    {
    lect = new BufferedReader(new FileReader(path)) ;
    while (lect.ready()==true)
    {
    tmp += lect.readLine() ;
    }//while
    }//try
    catch (NullPointerException a)
    {
    System.out.println("Erreur : pointeur null");
    }
    catch (IOException a)
    {
    System.out.println("Problème d'IO");
    }
    return tmp;
    }
     
     
     
    public static void main (String[] args)
    {
     
    String ch="";
    System.out.println("Entrer un Input:");
    ch=Profile.lireString();
    System.out.println("Input: " + ch);
    ecrireFichier ("example.txt", ch);
     
    }
     
     
    }

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par Manou1980 Voir le message
    PS: La boucle for (ainsi que la boucle While) ne fonctionne pas dans la fonction ecrire fichier
    Ne fonctionne pas ? Fais comme chez le médecin, décris nous les symptomes

    Et penses à utiliser les balises CODE pour formater les extraits de code que tu joins.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Salut,

    place ton code dans les balise " [.code] ... [/code] " sinon c'est illisible.
    Peux tu être plus précis sur ton problème ?

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 18
    Par défaut Write to File + Relative Timestamp - en JAVA
    Mon problème est que la boucle FOR dans la fonction ecrireFichier ne fonctionne pas. (dans le code, elle se trouve en gras)

    Le souci se résume a ceci: Il faut que je trouve le moyen d'insérer ligne par ligne chaque caractere de la chaine de caractere tapé par l'utilisateur.

    Par Exemple : Si je saisi comme chaine de caractere Bonjour je dois avoir dans mon fichier 7 lignes :

    1 B
    2 o
    3 n
    4 j
    5 o
    6 u
    7 r

    Deplus, je dois trouver le moyen de faire une concaténation avec l'heure précise avec laquelle les caracteres de la chaine de caractere ont été tapé.

    Exemple :

    B 14h53m13s
    o 14h53m14s
    n 14h53m15s
    j 14h53m17s
    o 14h53m18s
    u 14h53m20s
    r 14h53m21s


    LE CODE EST LE SUIVANT:

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    import java.io.*;
    
    public class Profile
    {
    	public static String lireString()
    	{ 
    		String ligne_lue=null; 
    		try
    		{ 
    			InputStreamReader lecteur=new InputStreamReader(System.in); 
    			BufferedReader entree=new BufferedReader(lecteur); 
    			ligne_lue=entree.readLine(); 
    		} 
    		catch(IOException err)
    			{ 
    			System.exit(0); 
    			} 
    		return ligne_lue; 
    	} 
    
    
    
    	public static void ecrireFichier(String path, String text) 
    	{
    		PrintWriter ecri ;
    		try
    		{
    			ecri = new PrintWriter(new FileWriter(path));
    			
    			for (int i=1; i<text.length; i++)
    			{
    				String letter = text.substring(0, i);	
    				ecri.println(letter);
    				text = text.substring(i+1);
    			}
    
    
    			ecri.flush();
    			ecri.close();
    		}
    		catch (NullPointerException a)
    		{
    			System.out.println("Erreur : pointeur null");
    		}
    		catch (IOException a)
    		{
    			System.out.println("Problème d'IO");
    		}
    	}
     
    	public String lireFichier (String path) 
    	{
    		BufferedReader lect ;
    		String tmp = "";
    		try
    		{
    			lect = new BufferedReader(new FileReader(path)) ;
    			while (lect.ready()==true) 
    			{
    				tmp += lect.readLine() ; 
    			}//while
    		}//try
    		catch (NullPointerException a)
    		{
    			System.out.println("Erreur : pointeur null");
    		}
    		catch (IOException a) 
    		{
    			System.out.println("Problème d'IO");
    		}
    		return tmp;
    	}
    	
    	
    
    	public static void main (String[] args)
    	{
    		
    		String ch="";
    		System.out.println("Entrer un Input:");
    		ch=Profile.lireString(); 
    		System.out.println("Input: " + ch); 
    		ecrireFichier ("example.txt", ch);	
    			
    	}
    
    
    }

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 18
    Par défaut Write to File + Relative Timestamp - en JAVA
    Le message d'erreur est le suivant lors de la compilation:

    cannot find symbol
    symbol : variable length
    location : class java.lang.String

    for (int i=1; i<text.length; i++)
    ^
    1 error

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Ben voilà, c'est tout de suite plus clair.
    String n'est pas un tableau. Avec String, length() est une méthode, il faut mettre les parenthèses.

    Par ailleurs, ce serait plus simple comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (int i=0; i<text.length(); i++) {
      char letter = text.charAt(i);	
      ecri.println(letter);
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 18
    Par défaut Relative Timestamp
    Je te Remercie énormément pour ta réponse et cela marche!!!

    Tu aurais une idée afin d'insérer l'heure a laquelle le caractère a été tapé???

    http://products.davisor.com/chart/do...stampType.html

  8. #8
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Salut, tu peux créer une fonction dans laquelle tu récupère l'heure windows. Il faut pour cela utiliser la classe Date, Va voir par ici : http://java.developpez.com/faq/java/...eure_courrante

    Ainsi tu copie l'heure au moment ou tu le souhaites.

    Je vais pas tout te donner, mais tu peux déja récupérer ce code type que j'ai déja utilisé pour un developpement antérieur ( que j'avais trouvé sur dev.net d'ailleurs )

    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
    import java.text.SimpleDateFormat;
    import java.util.GregorianCalendar;
     
    public class Heure {
     
    	public static GregorianCalendar calendar;
     
    	public static java.util.Date time;
    	public static String Heure()
     
    	{
    		calendar = (GregorianCalendar) GregorianCalendar.getInstance();
    		time = calendar.getTime();
    		SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
    		String formattedDate = formatter.format(time);
    		return formattedDate;
    	}
     
    }
    Après tu récupère au moment voulu l'heure, et tu la copie dans ton fichier

  9. #9
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 18
    Par défaut Relative Timestamp - en JAVA
    Je vous remercie énormément pour votre aide, le programme fonctionne.

    Toutefois, d'après la fonction lireString(), la chaine de caractères tapée par l'utilisateur est lue par le programme et grâce à la fonction ecrireFichier, la chaîne de caractère est découpée en caractères qui sont insérés dans un fichier tel l'exemple qui suit:

    Chaine tapée par l'utilisateur "Bon".

    Contenu du Fichier example.txt:

    2011-07-01 10:07:09.648 B
    2011-07-01 10:07:09.654 o
    2011-07-01 10:07:09.655 n

    Ma question:

    Comment faire pour extraire directement caractère par caractère la chaine de caractère tapée par l'utilisateur afin de lui affecté l'heure exacte a laquelle le caractère a été tapé par l'utilisateur?

    Ce que j'ai fait c'est que j'ai récupéré la chaine puis je les découpé en caractère puis je les ai inséré dans un fichier: C'est pas la bonne méthode.

    Voici les deux méthodes principales de ma classe Profile:


    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 String lireString()
    	{ 
    		String ligne_lue=null; 
    		try
    		{ 
    			InputStreamReader lecteur=new InputStreamReader(System.in); 
    			BufferedReader entree=new BufferedReader(lecteur); 
    			ligne_lue=entree.readLine(); 
    		} 
    		catch(IOException err)
    			{ 
    			System.exit(0); 
    			} 
    		return ligne_lue; 
    	}

    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
    public static void ecrireFichier(String path, String text) 
    	{
    		PrintWriter ecri ;
    		try
    		{
    			ecri = new PrintWriter(new FileWriter(path));
    			char espace = ' ';
     
    			for (int i=0; i<text.length(); i++) 
    			{
      				char letter = text.charAt(i); 
      				java.util.Date date= new java.util.Date();
      				ecri.print(new Timestamp(date.getTime()));
    				ecri.print(espace);
        				ecri.println(letter);
     
    			}
     
     
    			ecri.flush();
    			ecri.close();
    		}
    		catch (NullPointerException a)
    		{
    			System.out.println("Erreur : pointeur null");
    		}
    		catch (IOException a)
    		{
    			System.out.println("Problème d'IO");
    		}
    	}

  10. #10
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Manou1980 Voir le message
    Comment faire pour extraire directement caractère par caractère la chaine de caractère tapée par l'utilisateur afin de lui affecté l'heure exacte a laquelle le caractère a été tapé par l'utilisateur?
    Pas possible : la console ne lira rien du tout tant que tu n'auras pas appuyé sur Entrée.
    Il te faudrait faire un programme graphique, pour que ce genre de choses soient possibles.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Je reviens cette après midi pour t'aider , peut être auras tu trouvé la solution d'ici la.

    edit: j'avais pas vu la réponse de Thelvin, effectivement cela m'a l'air compliqué. Peut être un listener à chaque entré de caractère? Dès qu'il détecte l'appuie d'une touche... cela déclancherais une fonction.. je ne sais pas trop.

  12. #12
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 18
    Par défaut Relative Timestamp - en JAVA
    Pendora, Thelvin a tout a fait raison. Il faut un graphique. Je pensais l'implémenter après mais c'est faux.

    En effet, ce programme consiste à créer un profile d'utilisateur.

    L'heure à laquelle les lettres ont été tapés seront les ordonnés et les lettres tapées les abscisses.

    Il s'agit d'un système d'authentification de mot de passe.

    Merci les amis.

  13. #13
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Tres bien alors Je n'ai pas dit qu'il avais tort!

    Bonne continuation

  14. #14
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 18
    Par défaut Relative Timestamp
    C'était juste pour préciser seulement!!! car il m'a devancé dans la logique de ce programme

    En tout cas, un grand merci a vous deux!!!

  15. #15
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Je vois pas du tout ce que des ordonnées et des abscisses viennent faire là-dedans, et je répète que la console ne peut lire que ligne par ligne et jamais caractère par caractère. Ce qui implique que puisque la console ne peut pas le faire, seul un programme graphique le pourrait.

    Mais si tu as compris quelque chose et que tu es content, tant mieux.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 18
    Par défaut Relative Timestamp
    Je pense que tu as raison.

    On suppose que je conçoive une interface graphique, je pense que c'est la même chose que VB, il doit exister une méthode qui permet de déclencher une action quelconque lors de l'appui ou le relâchement d'une touche.

    C'est dans ce concept que mon Relative Time Stamp intervient, il va concaténer la date et l'heure précise lors de l'appui avec la lettre correspondant au caractère tapé.

    Le fichier contenant ces deux paramètres servira de base pour un graphique ayant pour abscisse les lettres et ordonnées l'heure. Ceci va constituer un Profil Utilisateur.

    Ce Programme est un système authentification de mot de passe. Chaque utilisateur aura son propre profil. Et c'est grâce au profil que l'utilisateur sera identifié et non grâce au mot de passe.

    Car la courbe est le profil et tout le monde n'a pas le même profil: Chacun a sa manière et façon unique de taper un mot de passe même s'il s'agit du même mot de passe.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/06/2007, 17h00
  2. PostFix | Error writing message file
    Par kippix dans le forum Administration système
    Réponses: 1
    Dernier message: 26/02/2007, 16h51
  3. Erreur : Error while trying to write to file
    Par WebPac dans le forum Installation
    Réponses: 11
    Dernier message: 19/05/2006, 22h23
  4. Xampp #1 - Can't create/write to file '/root/tmp/#sql_1a2f_0
    Par Alain15 dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 24/02/2006, 03h59
  5. [JSP/Websphere] File write / FTP / File read
    Par benben13 dans le forum Websphere
    Réponses: 34
    Dernier message: 18/08/2005, 16h18

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