Pb filtrer documents

Résolu
cs_kakol Messages postés 180 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 12 juin 2008 - 25 avril 2006 à 17:07
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 - 26 avril 2006 à 15:02
Bonjour,

J'essaie d'indexer des documents contenus dans un répertoire, mais avec un filtre sur l'extension des documents. Cependant, j'ai un problème avec mon filtre car il me retourne true à tous les documents.
Voici mon code :

static
void indexDocs(IndexWriter indexWriter, File file, AllDocumentFilesFilter filter)

throws IOException {

if (filter.accept(file,file.getName()))
{

// do not try to index files that cannot be read
if (file.canRead()) {

if (file.isDirectory()) {
String[] files = file.list(filter);

// an IO error could occur
if (file ! =
null) {

for (
int j = 0; j < files.length; j++) {
indexDocs(indexWriter,
new File(file, files[j]), filter);
}
}
total_number = files.length;
}
else {

try {
Document document =
new Document();

try {

// indexation de chaque fichier
document = FileDocument.Document(file);
System.out.println(filter.accept(file,file.getName()));
System.out.println(
"adding " + file);
}
catch (Exception ee) {
ee.printStackTrace();
}

// ajout des documents à l'index
indexWriter.addDocument(document);
num_processed++;
}

// at least on windows, some temporary files raise this exception with an "access denied" message
// checking if the file can be read doesn't help
catch (FileNotFoundException fnfe) {
;
}
}
}
}
}

class AllDocumentFilesFilter
implements FilenameFilter {

public AllDocumentFilesFilter() {
}

final
public
boolean accept(File dir, String name) {

if (name.equals(
".DS_Store"))
return
false;
// Mac OS X only - safe on other platforms
//File ff = new File(dir.toString() + "/" + name);
// if (ff.isDirectory()) return false;
if (name.endsWith(
""))
return
true;

if (name.endsWith(
".pdf"))
return
true;
//PDF
if (name.endsWith(
".doc"))
return
true;
//Word
if (name.endsWith(
".ppt"))
return
true;
//PowerPoint
if (name.endsWith(
".txt"))
return
true;
//Texte
if (name.endsWith(
".html"))
return
true;
//HTML
if (name.endsWith(
".sxw"))
return
true;
//Open Office
if (name.endsWith(
".abw"))
return
true;
//AbiWord
if (name.endsWith(
".htm"))
return
true;
//HTML
return
false;
}
}

J'ai mis un fichier .bmp dans mon répertoire et le fichier est quand même indexé, le System.out.println(filter.accept(file,file.getName())); me retourne true.

Quelqu'un pourrait-il m'aider svp?

Merci d'avance

*** Kakol ***

3 réponses

sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
26 avril 2006 à 13:34
if (name.endsWith("")) return true; => supprime cette condition car tout les fichier seront verifier avec ^^ du moins si jeme trompe pas
3
cs_kakol Messages postés 180 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 12 juin 2008
26 avril 2006 à 14:34
ok merci bien.
ça marche j'ai enlevé la ligne et ajouté if(dir.isDirectory) return true; à la place pour pouvoir aussi tenir compte des sous-dossiers.
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
26 avril 2006 à 15:02
de rien bonne continuation

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
Rejoignez-nous