JAVA lister contenu d'un répertoire

Résolu/Fermé
Signaler
-
 Meli -
bonjour tout le monde, j'ai crée la fonction suivante qui me liste le contenu de mon répertoire.
J'aurais voulu juste afficher les fichiers ".java" de ce répertoire.
comment faire??
de plus, j'aimerais que les noms des fichiers (sans extensions). Est-ce possible? si oui comment?

public void listerRepertoire(File repertoire){
String [] listefichiers;

int i;
listefichiers=repertoire.list();
for(i=0;i<listefichiers.length;i++){
System.out.println(listefichiers[i]);

}
}



merci d'avance

13 réponses


voilà j'ai crée cette méthode (elle fonctionne nikel) pour afficher la liste des fichiers .java du répertoire "répertoire"


public void listerRepertoire(File repertoire){

String [] listefichiers;

int i;
listefichiers=repertoire.list();
for(i=0;i<listefichiers.length;i++){
if(listefichiers[i].endsWith(".java")==true){

System.out.println(listefichiers[i].substring(0,listefichiers[i].length()-5));// on choisit la sous chaine - les 5 derniers caracteres ".java"
}
}
}
40
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
769
Date d'inscription
samedi 14 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2014
346
À mon avis le
==true
n'est pas nécessaire dans la mesure où la méthode endsWith renvoie un booléen, s'il vaut true la valeur de l'expression dans le if est vraie et donc le if s'exécute.
Il y a plus simple pour supprimer le ".java" :

System.out.println(listefichiers[i].replaceFirst(".java",""));

Cette ligne remplace la chaîne ".java" par une chaîne vide.
Nickel. ça m'a aidé à faire ce que je voulais. Merci
bon je débute en java, mais magré tout , j'aurais codé ainsi (solution + générique ?)

/*
En autre :
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import java.util.regex.Matcher;
*/

Des variables :
String path= "c:\toto";
String filtre = "toto_(\w*).txt";


Corps Méthode

Pattern p = Pattern.compile(filtre);
String [] s = new File(path).list();
List<String> listeFichiers = new ArrayList<String>();
for (int i=0; i<s.length;i++)
{
Matcher m = p.matcher(s[i]);
if ( m.matches())
{
listeFichiers.add(s[i]);
}
}


voilà dans "listeFichiers" tu récupères tous les fichiers qui répondent à ton "filtre" .. c'est une regex, java est pas mal pour ça, serait dommage de s'en passer....
errer dans :
String filtre = "toto_(\w*).txt";
!!!!!!
public static void main(String [] args) {


FilenameFilter javaFilter = new FilenameFilter() {

public boolean accept(File arg0, String arg1) {
return arg1.endsWith(".java");
}
};

File repertoire = new File(".");
String[] children = repertoire.list(javaFilter);
for(int i=0;i<children.length;i++){
System.out.println(children[i].substring(0,children[i].lastIndexOf(".java")));
}

}

//J'espère que ça t'aidera
pardon je ne réponds qu'à moitié avec l'affichage cela donne :

import java.util.*;
import java.util.Date;
//import java.util.StringTokenizer;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
//import java.text.DateFormat;
//import java.lang.*;
import java.io.*;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import java.util.regex.Matcher;

public class TEST {

/**
* @param args
*/
public static void main(String[] args)
{
try
{
String path = args[0];
String filtre = args[1];
Pattern p = Pattern.compile(filtre);
String [] s = new File(path).list();
List<String> listeFichiers = new ArrayList<String>();
for (int i=0; i<s.length;i++)
{
Matcher m = p.matcher(s[i]);
if ( m.matches())
{
System.out.println(m.group(1));
listeFichiers.add(s[i]);
}
}
}
catch (PatternSyntaxException pse)
{
pse.printStackTrace();
}
}
}


sI je positionne
args[0] = "c:\test"
args[1] = "(\w*_\d*)(.txt)"

Le répertoire contient :
Check2.exe
Interop.SHDocVw.dll
lance.bat
nunit.framework.dll
Rhino.Mocks.dll
test_1.txt
test_2008.txt
test_2008_1.txt
WatiN.Core.dll
WatiN.Core.UnitTests.dll


Resultat serait :
test_1
test_2008
test_2008_1


Voilà qui devrait aider

j'ai trouvé ça et je vais tester!


import java.io.*;

public class FiltreFichierJava implements FilenameFilter {
public static void main(String args[]) throws IOException {
File f = new File(".");
FilenameFilter filter = new FiltreFichierJava();
System.out.println("Fichiers Java : " );
String[] noms = f.list(filter);
for (int i = 0; noms != null && i < noms.length; i++)
System.out.println("\t" + noms[i]);
}

public boolean accept(File dir, String name) {
return (name.endsWith(".java"));
}
}
merci pour ton monologue, cela m'a servis
a moi aussi ...
Merci.
A moi aussi, bravo pour tes recherches.

personne ne sait? pas possible?
merci de répondre

bonne journée
Merci pour la solution... ;)
Merci aussi, génial :D