Write to File + Relative Timestamp - JAVA

Résolu/Fermé
Manou - 30 juin 2011 à 11:59
Manou1980 Messages postés 11 Date d'inscription jeudi 30 juin 2011 Statut Membre Dernière intervention 31 octobre 2011 - 1 juil. 2011 à 10:45
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
.................................................................

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);

}


}

.................................................................

A voir également:

3 réponses

Manou1980 Messages postés 11 Date d'inscription jeudi 30 juin 2011 Statut Membre Dernière intervention 31 octobre 2011
30 juin 2011 à 15:56
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

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() ; 
			}
		}
		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);	
			
	}


}
0
sakoba2010 Messages postés 157 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 24 juillet 2013 15
30 juin 2011 à 16:39
Salut,

la variable text est un String donc vous devriez utiliser la fonction legnth() et non le constant length qui est réserve au tableau.
Pour découper un mot vous avez emprunter un chemin long voici un exemple simple ici:http://sakoba.byethost13.com/2011/06/30/java-split-words/
0
Manou1980 Messages postés 11 Date d'inscription jeudi 30 juin 2011 Statut Membre Dernière intervention 31 octobre 2011
1 juil. 2011 à 10:45
Je vous remercie énormément pour votre aide, le programme fonctionne.

Toutefois, d'après la fonction [B]lireString()[/B], la chaine de caractères tapée par l'utilisateur est lue par le programme et grâce à la fonction [B]ecrireFichier[/B], 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 [B]directement[/B] 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.

[B][I][U]Voici les deux méthodes principales de ma classe Profile:[/U][/I][/B]


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));
			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");
		}
	}
0