2010-02-06 4 views
1

est-il possible de filtrer d'abord tous les fichiers avec l'extension "java", puis rechercher des fichiers avec cette extension? pouvez-vous expliquer avec un extrait de code? merciRecherche d'un fichier avec l'extension .java

+10

Souhaitez que ce site était autour quand j'étais étudiant. 160 questions de devoirs ont déjà été répondues pour "Johanna". – Pool

+1

LOL ... J'ai dû lire le livre pour finir mes devoirs! – cx0der

+2

Nous ne pouvons qu'espérer que les professeurs connaissent aussi le site. Je suppose que c'est la raison pour laquelle environ 100% des demandeurs d'emploi que j'interroge sont inutiles? –

Répondre

1

Sur Unix, vous pouvez essayer find <dir> -name '*.java' -exec grep <search string> {} \;

+1

Je soupçonne que son problème de devoirs implique d'écrire du code Java pour faire le travail. – Pointy

+0

www.betterthangrep.com - 'ack' est un outil de recherche de code plus puissant que ce qui précède. Conseillé. –

+0

J'utilise 'grep $ (find

-name * .java | xargs)', ce qui est pire s'il y a beaucoup de fichiers java, mais un peu plus rapide à taper quand out-of-IDE – tucuxi

0

Si vous devez le faire en Java, la meilleure façon est d'utiliser Apache Commons IO et en particulier FileUtils.iterateFiles(). Cela dit, si c'est une question de devoirs, je doute que vous obtiendrez beaucoup de points pour l'utilisation ci-dessus. Je soupçonne que le but du devoir est de tester votre capacité à écrire des routines récursives (il y a un indice là-bas!) - ne pas trouver de bibliothèques tierces (une compétence précieuse en soi, l'esprit).

3

Je vote également pour Apache Commons.

http://www.kodejava.org/examples/359.html gves un exemple d'utilisation:

package org.kodejava.example.commons.io; 

import org.apache.commons.io.FileUtils; 

import java.io.File; 
import java.util.Collection; 
import java.util.Iterator; 

public class SearchFileRecursive { 
    public static void main(String[] args) { 
     File root = new File("/home/foobar/Personal/Examples"); 

     try { 
      String[] extensions = {"xml", "java", "dat"}; 
      boolean recursive = true; 

      // 
      // Finds files within a root directory and optionally its 
      // subdirectories which match an array of extensions. When the 
      // extensions is null all files will be returned. 
      // 
      // This method will returns matched file as java.io.File 
      // 
      Collection files = FileUtils.listFiles(root, extensions, recursive); 

      for (Iterator iterator = files.iterator(); iterator.hasNext();) { 
       File file = (File) iterator.next(); 
       System.out.println("File = " + file.getAbsolutePath()); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

Savez-vous comment rechercher tous la mémoire, en utilisant ce code? Au lieu d'un répertoire? File root = nouveau fichier ("c: /"); ne fonctionne pas réellement. – Doszi89

0

Ceci est rendu facile à l'aide FileSearcher.java trouvée sur GitHub

Un exemple de trouver tous les fichiers .java dans votre ordinateur entier ressemblerait à ceci:

Et vous pouvez tout aussi facilement rechercher uniquement le dossier actuel ou le dossier actuel + sous-dossiers en changeant SEARCH_EVERYTHING à CURRENT_FOLDER ou SUBFOLDERS_AND_CURRENT.

J'espère que cela aide !!!