Java:affichage d'une partie du fichier texte

Fermé
courageuse Messages postés 5 Date d'inscription dimanche 27 janvier 2008 Statut Membre Dernière intervention 15 avril 2009 - 15 avril 2009 à 21:15
 Utilisateur anonyme - 17 avril 2009 à 10:19
Bonjour,
salut,
je travaille sur les entrées/sorties(i/o).je veut affichier une partie d'un fichier texte en utilisant la lagage java.puisque le fichier est trop long je ne veut pas l'affichege total mais je veux à partir d'une ligne précis afficher ce qui suit cette ligne.
voila mon code qui me permet de lire et d'afficher tou le contenu du fichier mais comment je peut afficher juste une partie précise aprés une ligne précis??
merci

BufferedReader Fich2 = new BufferedReader(new FileReader("/home/fatma/Bureau/fatma/fichier.txt"));

String affichage = "";
String ligne;

while((ligne = Fich2.readLine())!= null)
{
affichage+= ligne + "\n";
} // fin de boucle

merci pour votre aide.
A voir également:

3 réponses

courageuse Messages postés 5 Date d'inscription dimanche 27 janvier 2008 Statut Membre Dernière intervention 15 avril 2009
15 avril 2009 à 23:15
please help
0
Utilisateur anonyme
16 avril 2009 à 02:59
Bonjour,

Tu veux afficher par exemple après la 9ème ligne (donc à partir de la ligne 10) ?
Ou bien après la ligne contenant une chaîne précise (exemple ligne = "Ligne 9" ?

Dans le 1er cas tu utilises un compteur de lignes que tu incrémentes chaque fois que ligne !=null
Dans le second cas c'est moins facile car il faut connaître le contenu exact de la dernière ligne à ignorer

Après modf de to code BufferedReader et avec un fichier "desLignes.txt" contenant 52 lignes "Ligne 1" à "Ligne 52" :

InputStream is = null;
InputStreamReader isr = null;
BufferedReader br = null;
String affichage = "";
String ligne;
String fich2 = "desLignes.txt";
boolean ignorer;


// premier cas:

int ctrLigne = 0;
int apres = 19; // ou si on veut quad même tout lister apres = -1;
try
{
is = new FileInputStream(fich2);
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
while((ligne = br.readLine())!= null)
{
ctrLigne++;

if (ctrLigne > apres)
{
affichage+= ligne + "\n";
}
}

br.close();
System.out.println("affichage du premier cas:\n" + affichage + "\n\n");
javax.swing.JOptionPane.showMessageDialog(null," FIN DU PRENIER CAS.");
}
catch (IOException ioe)
{
System.out.println(ioe.toString());
javax.swing.JOptionPane.showMessageDialog(null," Fichier "
+ fich2 + " non trouvé");
}

// et pour le second cas:

affichage = "";
try
{
is = new FileInputStream(fich2);
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
//BufferedReader Fich2 = new BufferedReader(new FileReader("desLignes.txt"));
String apresLaLigne = "Ligne 29";
// ou bien String apresLaLigne = "<tout>"; // si on veut tout afficher
if (apresLaLigne.equals("<tout>"))
ignorer = false;
else
ignorer = true;
while((ligne = br.readLine())!= null)
{
if (ignorer) // true par defaut
{
if (ligne.equals(apresLaLigne))
ignorer = false;
}
if ( (ignorer == false) && (!ligne.equals(apresLaLigne)) )
{
affichage+= ligne + "\n";
}
}
br.close();
System.out.println("affichage du second cas:\n" + affichage);
javax.swing.JOptionPane.showMessageDialog(null," FIN.");
}
catch (IOException ioe)
{
System.out.println(ioe.toString());
javax.swing.JOptionPane.showMessageDialog(null," Fichier "
+ fich2 + " non trouvé");
}

Cordialement,

Dan
0
Merci Danimo pour ta reponse. cé une bonne idée, cela me permet d'afficher a partir d'un numero de ligne le reste du fichier. mais si je veux afficher seulement une partie du fichier.par exemple mon fichier est composé:
....
...
...
[azerty]
....
....
...
[querty]
.......
.......
...

si je veux afficher de [azerty] jusqu'a le [] suivant(oû on s'arrete).
tous le fichier est composé comme cette architecture. le nom entre accolade est saisie comme entrée au clavier por lister ces détails(ces lignes qui le suive)
est que vous avez une idée.
merci
0
Utilisateur anonyme
17 avril 2009 à 10:19
Salut,


InputStream is = null;
InputStreamReader isr = null;
BufferedReader br = null;

String fich2 = "desLignes.txt";

try
{
is = new FileInputStream(fich2);
isr = new InputStreamReader(is);
br = new BufferedReader(isr);

String affichage = "";
String affTitre = "Affichage ";
String ligne;
boolean ignorer;

int ctrLigne = 0;
int ligneDeb = 0;
int ligneFin = 0;
String depuis = "";

/**
*
* Si on veut lister tout: depuis = "<tout>";
*
* ou bien:
* si on veut lister par exemple depuis la ligne 12 jusqu'a la ligne 40
* ligneDeb = 12; et ligneFin = 40;
*
* ou bien:
* si on veut lister depuis "[azerty]" non inclus jusqu'au prochain "[" non inclus:
* depuis = "[azerty]";
* LA BALISE DÉBUT DE FICHIER (1ERE LIGNE) EST OBLIGATOIRE SINON PAS D'AFFICHAGE
* POSSIBLE DU 1ER GROUPE.
* PAR CONTRE LA BALISE FIN DE FICHIER NE L'EST PAS MAIS PEUT EXISTER.
*
**/

// Pour essayer :
// Ces 2 lignes
//ligneDeb = 12;
//ligneFin = 40;
// ou bien cette ligne
//depuis = "<tout>";
// ou bien celle-ci
depuis = "[debut 3]";
// à remplacer par une saisie clavier

if (depuis.equals("<tout>"))
{
affTitre+= "de tout.\n";
ligneDeb = 1;
ligneFin = 99999;
}
if (ligneDeb !=0)
{
if (!depuis.equals("<tout>"))
{
affTitre+= "du num. de ligne " + ligneDeb + " au num. de ligne "
+ ligneFin + ".\n";
}
while((ligne = br.readLine())!= null)
{
ctrLigne++;

if ( (ctrLigne >= ligneDeb) && (ctrLigne <ligneFin +1) )
{
affichage+= ctrLigne + " " + ligne + "\n";
}
}

br.close();
System.out.println(affTitre + "\n" + affichage + "\n\n");
}

// et pour le cas entre limites "[xxxxx]" et "["
if (ligneDeb == 0)
{
affTitre+= "de " + "\"" + depuis + "\" jusqu'au prochain debut de ligne " + "\"[\"\n"
+ " (bornes non comprises.)\n";
affichage = "";
ignorer = true;
while((ligne = br.readLine())!= null)
{
if (ignorer) // true par defaut
{
if (ligne.equals(depuis))
ignorer = false;
}
if ( (ignorer == false) && (!ligne.equals(depuis)) )
{
int index = ligne.indexOf("[");
if ( (ignorer == false) && (index == 0) )
{
//affichage+= ligne + "\n";
break;
}
else
if (ignorer == false)
{
affichage+= ligne + "\n";
}
}
}
br.close();
System.out.println(affTitre + "\n" + affichage);
}
javax.swing.JOptionPane.showMessageDialog(null," FIN.");

}
catch (IOException ioe)
{
System.out.println(ioe.toString());
javax.swing.JOptionPane.showMessageDialog(null," Fichier "
+ fich2 + " non trouvé");
}

Cordialement,

Dan
0