Posez votre question Signaler

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

Nicocotiers - Dernière réponse le 3 févr. 2012 à 10:39
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
Lire la suite 

JAVA lister contenu d'un répertoire »

15 réponses
Réponse
+21
moins plus
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"
}
}
}
js95- 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.
ltrague - 3 févr. 2012 à 10:39
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.
Ajouter un commentaire
Réponse
+11
moins plus
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....
Ajouter un commentaire
Réponse
+8
moins plus
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
Ajouter un commentaire
Réponse
+6
moins plus
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
Ajouter un commentaire
Réponse
+4
moins plus
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"));
}
}
Ajouter un commentaire
Réponse
-1
moins plus
A moi aussi, bravo pour tes recherches.
Ajouter un commentaire
Réponse
-1
moins plus
merci
Ajouter un commentaire
Réponse
-2
moins plus
merci pour ton monologue, cela m'a servis
Ajouter un commentaire
Réponse
-2
moins plus
a moi aussi ...
Merci.
Ajouter un commentaire
Réponse
-3
moins plus
personne ne sait? pas possible?
merci de répondre

bonne journée
Ajouter un commentaire
Réponse
-4
moins plus
Idem xD
Ajouter un commentaire
Réponse
-4
moins plus
Merci pour la solution... ;)
Ajouter un commentaire
Réponse
-4
moins plus
Merci aussi, génial :D
Ajouter un commentaire
Ce document intitulé « JAVA lister contenu d'un répertoire » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?