OVH Cloud OVH Cloud

Recherche d'un terme dans un fichier

3 réponses
Avatar
dai2
Bonjour,

J'ai un fichier contenant plusieurs fois le même terme. Je souhaite
chercher ce terme. Une fois que je l'ai trouver suivant sa position
dans le fichier j'aimerais rajouter des mots avant ou/et apres ou/et
sur la ligne du dessus ou/et sur la ligne du dessous.

Je souhaite sauvegarder le fichier et écraser l'ancienne version.

Comment faire ? Je n'arrive à trouver une solution propre.

TIA

---

Stan

3 réponses

Avatar
Pascal
da? wrote:
Bonjour,

J'ai un fichier contenant plusieurs fois le même terme. Je souhaite
chercher ce terme. Une fois que je l'ai trouver suivant sa position
dans le fichier j'aimerais rajouter des mots avant ou/et apres ou/et
sur la ligne du dessus ou/et sur la ligne du dessous.

Je souhaite sauvegarder le fichier et écraser l'ancienne version.

Comment faire ? Je n'arrive à trouver une solution propre.

TIA

---

Stan
va voir sur fr.comp.algorithmes plutot.


--
Pascal

Avatar
dai2
Pascal wrote in message news:<3fcb9d44$0$2782$...
da? wrote:
Bonjour,

J'ai un fichier contenant plusieurs fois le même terme. Je souhaite
chercher ce terme. Une fois que je l'ai trouver suivant sa position
dans le fichier j'aimerais rajouter des mots avant ou/et apres ou/et
sur la ligne du dessus ou/et sur la ligne du dessous.

Je souhaite sauvegarder le fichier et écraser l'ancienne version.

Comment faire ? Je n'arrive à trouver une solution propre.

TIA

---

Stan
va voir sur fr.comp.algorithmes plutot.



C'est la syntaxe en java qui m'interresse...


Avatar
Jean-Yves PIERRES
Salut à tous,

J'ai utilisé Matcher et Pattern. Ci dessous le code que j'ai récupéré dans
la toile.

private String containsPattern(File file, String pattern)
{ // Assume file small enough to read entirely into memory
int i,j;
FileInputStream fis = null;
String stmp="";
try { //lecture et codage du fichier
fis = new FileInputStream(file);
//lecture de codage
FileChannel channel = fis.getChannel();
int fileLength = (int) channel.size();
MappedByteBuffer buffer = channel.map(
FileChannel.MapMode.READ_ONLY, 0, fileLength);
// Convert to character buffer
Charset charset = Charset.forName("ISO-8859-1");
CharsetDecoder decoder = charset.newDecoder();
CharBuffer charBuffer = decoder.decode(buffer);
Pattern thePattern = Pattern.compile(pattern); //mot recherché
Matcher matcher = thePattern.matcher(charBuffer); initialisation
de la recherche

while (matcher.find())
{ //ici je récupère la ligne entière
i=matcher.start();j=matcher.end();
while (charBuffer.get(i)!=0x0A & i>0) {i--;} i++; //début de
ligne
while (charBuffer.get(j)!=0x0D & j<charBuffer.length() ) {j++;}
//fin de ligne
stmp=charBuffer.toString().substring(i,j);
//System.out.println(" >>>"+stmp.substring(0,3).equals("
")+"<<<<<");
//System.out.println(" >>>"+stxt+"<>"+i);
}
return (stmp);
} catch (IOException ex) {
return (stxt);
}
}

Bon courage
A+

Jean-Yves

"da?" a écrit dans le message de news:

Bonjour,

J'ai un fichier contenant plusieurs fois le même terme. Je souhaite
chercher ce terme. Une fois que je l'ai trouver suivant sa position
dans le fichier j'aimerais rajouter des mots avant ou/et apres ou/et
sur la ligne du dessus ou/et sur la ligne du dessous.

Je souhaite sauvegarder le fichier et écraser l'ancienne version.

Comment faire ? Je n'arrive à trouver une solution propre.

TIA

---

Stan