Menu

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

Nicocotiers - 28 juin 2004 à 16:40 - 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 

17 réponses

Meilleure réponse
Nicocotiers - 29 juin 2004 à 10:27
39
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"
}
}
}

Merci Nicocotiers 39

Avec quelques mots c'est encore mieux Ajouter un commentaire

CCM a aidé 24907 internautes ce mois-ci

js95 774 Messages postés samedi 14 juin 2008Date d'inscription 29 juillet 2014 Dernière intervention - 5 nov. 2010 à 18:35
À 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
Nicocotiers - 29 juin 2004 à 09:20
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
javabeginer - 3 janv. 2008 à 16:47
0
Merci
a moi aussi ...
Merci.
rafinenesse - 17 janv. 2008 à 13:58
0
Merci
A moi aussi, bravo pour tes recherches.
Nicocotiers - 29 juin 2004 à 09:11
-1
Merci
personne ne sait? pas possible?
merci de répondre

bonne journée
-3
Merci
Merci pour la solution... ;)
guiguidu60 - 10 avril 2010 à 23:56
-3
Merci
Merci aussi, génial :D