Récupérer une ligne voulue dans un fichier texte

khalous91 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour
Alors voilà j'ai un petit problème, en faite j'ai un fichier texte ci-dessous :

#!/bin/csh -xv
#BSUB -J calmod_POGO_2CU
#BSUB -o calmod_POGO_2CU.o%J
#BSUB -L /bin/csh

umask 002

#----------------------------------------------------------------------
set dir_listing = jdfgjkdfnbjkdfnbjnfdbndfjbndfbndfkb
jnfjkg
$gdfgdfg
dfgdfgdfg74654654fdg
fdgdfg
fgdf
set toto = tata
fgfg
fg;hmfh
dfdsfgdfg
set nono = ueueue777
set khjkhjkhkj 8787687657
titi = tutu


et j'aimerai récupérer les lignes de la forme set ... = .... c'est à dire je veux récupérer dans la console :
set dir_listing = jdfgjkdfnbjkdfnbjnfdbndfjbndfbndfkb
set nono = ueueue777
set toto = tata

J'ai mon début de code que j'ai réaliser :
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;


public class DetecteSymbole {

public static void main(String[] args) {
String chaine ="";
String fichier = "fichiertxtP2CSH.txt";

// lit le fichier ligne par ligne
try{
InputStream ips=new FileInputStream(fichier);
InputStreamReader ipsr=new InputStreamReader(ips);
BufferedReader br=new BufferedReader(ipsr);
String ligne;
while ((ligne=br.readLine())!=null){
System.out.println(ligne);
chaine+=ligne+"\n";
}
br.close();
}
catch (Exception e){
System.out.println(e.toString());
}
// récupérer toutes les lignes avec un set ... = ...

// a partir de là je suis bloquer grrr
}

}


Pouvez vous m'aider please
Thinks
A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

Pour lire un flux texte (clavier, fichier...) je te conseilles la classe Scanner plutôt que la combinaison d'InputStream/Reader inutilement compliqués.

De plus ta String chaine pour accumuler le résultat est pas vraiment une bonne idée, une String ce n'est pas un conteneur, il vaut mieux utiliser une List par exemple.

Quant à ton problème, une expression régulière comme
set .+=.+
devrait faire l'affaire. Exemple :

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class DetecteSymbole {

    public static void main(String[] args) throws FileNotFoundException {
	File file = new File("C:/fichiertxtP2CSH.txt");
	String regex = "set .+=.+";

	List<String> list = new ArrayList<String>();

	Scanner sc = new Scanner(file);
	while (sc.hasNextLine()) {
	    String line = sc.nextLine();
	    if (line.matches(regex))
		list.add(line);
	}
	sc.close();

	for (String line : list)
	    System.out.println(line);
    }
}
0