Menu

JAVA lister contenu d'un répertoire [Résolu/Fermé]

- - Dernière réponse :  Meli - 18 mai 2018 à 08:51
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
Afficher la suite 

13 réponses

Meilleure réponse
40
Merci
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"
}
}
}

Dire « Merci » 40

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 55671 internautes nous ont dit merci ce mois-ci

js95
Messages postés
774
Date d'inscription
samedi 14 juin 2008
Dernière intervention
29 juillet 2014
324 -
À 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
14
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";
!!!!!!
11
Merci
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
9
Merci
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
7
Merci
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"));
}
}
0
Merci
merci pour ton monologue, cela m'a servis
0
Merci
a moi aussi ...
Merci.
0
Merci
A moi aussi, bravo pour tes recherches.
-1
Merci
personne ne sait? pas possible?
merci de répondre

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