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:
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);
}
} |
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:
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);
}
} |
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
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:
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:
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");
}
} |
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.8-)