Ecrire dans plusieurs fichiers

cocolabricot Messages postés 16 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 21 juin 2008 - 9 juin 2008 à 15:33
cocolabricot Messages postés 16 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 21 juin 2008 - 17 juin 2008 à 01:09
Bonjour,

Je me prends la tête depuis quelques jours pour écrire un programme Java qui écrit des lignes dans plusieurs fichiers textes.
Je m'explique : je dois d'abord ouvrir un fichier texte (que j'ouvre avec une fenêtre, ça c'est OK) et ensuite je dois découper ce fichier lignes par lignes et sauvegarder chaque ligne dans un fichier texte.
Par exemple un fichier de 4 lignes :
Ligne 1
Ligne 2
Ligne 3
Ligne 4
donnera 4 nouveaux fichiers textes contenant chacun 1 ligne :
Fichier 1 -> Ligne 1 et c'est tout
Fichier 2 -> Ligne 2
etc ...

je galère

Merci pour vos réponses

13 réponses

dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
9 juin 2008 à 15:39
Et tu bloques sur quel point?

Récupérer une seule ligne?

<hr size="2" width="100%" />Timmy!!!
0
cocolabricot Messages postés 16 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 21 juin 2008
9 juin 2008 à 15:45
Oui et écrire ....
En fait j'ai un programme "ecrire" mais je donne un nom au fichier que je veux créer !
Je n'arrive pas à créer des fichiers txt avec des noms différents pour recevoir mes lignes du fichier texte initial.
0
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
9 juin 2008 à 16:02
Ben en fait quand tu vas créer ton File, tu lui passes bien en paramètre du constructeur une String, non?

Et pour récupérer ligne par ligne, tu vas faire une boucle, donc tu auras un compteur
Disons que le compteur est cpt

// le lecteur qui va lire ton fichier source
Scanner scanner <code class="java_operator">=
 new
Scanner
(
new
File
(fichierSource));</code>

// la ligne lue
String ligne;

// le fichier qui sera créé pour la ligne lue
File f;

// le compteur de ligne
int cpt = 0;

// on itère sur le contenu de fichier
while ( scanner.hasNextLine()) {
ligne = scanner.nextLine();

f = new File("fichier" + cpt + ".txt");

cpt++;

// Code pour écrire ligne dans le fichier f
}

scanner.close();


Je te laisse chercher pour écrire dans un fichier

<hr size="2" width="100%" />Timmy!!!
0
cocolabricot Messages postés 16 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 21 juin 2008
16 juin 2008 à 15:18
Re !

Merci beaucoup ca marche nikel ! Est t-il possible de faire pareil mais cette fois ci en délimitant des paragraphes et non des lignes ? C'est-a-dire qu'il ne faut plus lire ligne par ligne mais paragraphes par paragraphes.
ex :
para1 exemple
de
paragraphe

para 2 un
autre
paragraphe

....

J'ai regardé la classe Scanner mais je n'ai pas reussi, je pense que c'est possible avec cette classe non ?

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
16 juin 2008 à 15:25
Ben après ca dépend de ce que tu considères comme paragraphe.

Si un paragraphe correspondra toujours pour toi "\n\n",

while ( scanner.hasNextLine()) {
ligne = scanner.nextLine();

if (ligne.equals("\n") &amp;&amp; 
scanner.hasNextLine()
) {
ligne = scanner.nextLine();
if (ligne.equals("\n")
 &amp;&amp; 
scanner.hasNextLine()
) {
			f = new File("fichier" + cpt + ".txt");

cpt++;

// du coup, on vient de sauter le "\n\n"
ligne = nextLine();
		} 
	}

// Code pour écrire ligne dans le fichier f
}


Maintenant, il faut que tu l'adaptes à ton style de paragraphe, mais dans l'esprit je ferais comme ça
<hr size="2" width="100%" />Timmy!!!
0
cocolabricot Messages postés 16 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 21 juin 2008
16 juin 2008 à 15:53
J'ai essayé mais quand je veux écrire dans le fichier f il me dit que la variable n'est pas initialisée. Et je ne comprend pas bien pourquoi il y a deux conditions identiques ?
0
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
16 juin 2008 à 15:56
A ouais merde, je suis con ^^

Au tout début, si tu regardes dans ce que je t'ai donné, f n'est pas du tout initialisé.

Juste avant la boucle  fait un
f = new File("fichier" + cpt + ".txt");


<hr size="2" width="100%" />Timmy!!!
0
cocolabricot Messages postés 16 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 21 juin 2008
16 juin 2008 à 16:14
Ca compile .... mais ca ne marche pas lol
J'ai juste un fichier : fichier0 avec la premiere ligne .... apparement il n'écrit plus après.
0
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
16 juin 2008 à 16:41
Ah merde... Erreur dans mon algo surement... Mets des traceurs un peu partout, je sais pas trop là

<hr size="2" width="100%" />Timmy!!!
0
cocolabricot Messages postés 16 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 21 juin 2008
16 juin 2008 à 16:54
Tu peux juste m'expliquer pourquoi tu as 2 conditions if pareil ?
0
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
16 juin 2008 à 17:05
Pour tester qu'il y ait 2 lignes de suites qui sont comme ça "\n\n"
Regarde :

premier paragraphe\n
\n
\n
deuxieme paragraphe\n
zfzefzef\n

Je teste si une ligne entière vaut \n, si oui, je passe à la suivante et je teste si la suivante est égale à \n aussi. Si oui, je créé un nouveau fichier et je passe à la ligne suivante.

Tu vois ce que je veux dire?

<hr size="2" width="100%" />Timmy!!!
0
cocolabricot Messages postés 16 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 21 juin 2008
17 juin 2008 à 01:07
Je vais cogiter encore là dessus. Juste si tu pouvais me dire pourquoi tu as mis deux conditions identiques ?
0
cocolabricot Messages postés 16 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 21 juin 2008
17 juin 2008 à 01:09
Ooops je pensais que mon message nétait pas pris en compte et je n'ai pas vu la réponse .... sorry !
0
Rejoignez-nous