J'ai besoin de rechercher un texte dans tous les fichiers d'un répertoire et sous-répertoires toute idée intelligente?Recherche récursive dans les fichiers texte dans un répertoire avec Java?
4
A
Répondre
17
utiliser la méthode de org.apache.commons.io.FileUtils.iterateFiles()
Apache commons-io
De l'javadoc:
Permet à l'itération sur les fichiers dans un répertoire donné (et éventuellement ses sous-répertoires) répondent à un réseau d'extensions.
Par exemple:
Iterator iter = FileUtils.iterateFiles(directory,
new String[]{"txt","java"}, true);
while(iter.hasNext()) {
File file = (File) iter.next();
searchInFile(file);
}
4
Essayez une classe avec une méthode récursive quelque chose comme ceci:
public class Searcher {
private String toFind, toReplace;
// whatever other info you need
public void searchInTextFiles(File dir) {
File[] a = dir.list();
for (File f : a) {
if (f.isDirectory()) {
searchInTextFiles(f);
} else if (f.name().endsWith(".txt")) {
searchInFile(f);
}
}
}
private void searchInFile(File f) {
// do whatever you need to do on f using fields from this class
}
}
0
// modifier u doivent définir fonct ... checkfile
void Found(String dir,Vector flist){
File srchdir(dir);
File[] listf=listFiles();
for(int i=0;i<srchdir.listf.length;i++){
if(listf[i].isDirectory()){ Found(dir+"/"+listf[i].getName(),flist);
}else{ if(CheckFile(listf[i])) flist.add(dir+"/"+listf[i].getName()); }
}
}
Vector Found(String dir){
File srchdir(dir);
Vector flist=new Vector();
File[] listf=listFiles();
for(int i=0;i<srchdir.listf.length;i++){
if(listf[i].isDirectory()){ Found(dir+"/"+listf[i].getName(),flist);
}else{ if(CheckFile(listf[i])) flist.add(dir+"/"+listf[i].getName()); }
}
return flist;
}
4
Runtime.getRuntime().exec("grep", "-r", <searchText>);
1
c'est ma solution. Il recherche la chaîne "searchingText" dans un répertoire de projet java. J'espère que cela aide quelqu'un.
package textSearch;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Scanner;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.DirectoryFileFilter;
import org.apache.commons.io.filefilter.RegexFileFilter;
import org.apache.commons.io.filefilter.TrueFileFilter;
public class TextSearchingInFilesInDirectory {
private static String filePath ="";
static int fileCount = 0;
static String fileName ;
static int lineNumber=0;
private static final String folderPath = "C:\\Users\\omertasci\\EclipseWorkspace\\AnyProjectName\\src";
public static void main(String[] args) throws FileNotFoundException{
File dir = new File(folderPath);
List<File> files =(List<File>) FileUtils.listFiles(dir, TrueFileFilter.INSTANCE, DirectoryFileFilter.DIRECTORY);
for (File file : files) {
try {
System.out.println(file.getCanonicalPath()+ " is scanned.");
filePath=file.getCanonicalPath();
if (file.isFile()) {
//System.out.println(file.getName());
fileName=file.getName();
try {
FileReader reader = new FileReader(filePath);
BufferedReader br = new BufferedReader(reader);
String s;
while((s = br.readLine()) != null) {
lineNumber++;
if(s.contains("searchingText")){ // you can change searchText with any keyword .
System.out.println("searchingText is found in "+ file.getName()+ " at "+lineNumber+". line.\n"+ "----"+s.trim()+ "----");
}
}
reader.close();
}
catch(Exception e){
e.printStackTrace();
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Questions connexes
- 1. Exécution récursive des fichiers dans un répertoire utilisant ruby
- 2. Recherche de fichier récursive dans .net
- 3. Recherche de contrôle récursive avec LINQ
- 4. Comment lister les fichiers texte dans un répertoire dans Progress 4GL?
- 5. Recherche d'une séquence d'octets dans un fichier binaire avec Java
- 6. recherche dans les fichiers .jar eclipse
- 7. Lire des fichiers texte Unicode avec Java
- 8. Comment copier un répertoire de manière récursive et filtrer les noms de fichiers en Perl?
- 9. Supprimer tous les fichiers dans un répertoire vb6
- 10. phpmyadmin - liste les fichiers dans le répertoire
- 11. Comment lister les fichiers dans un répertoire statique?
- 12. quels sont ces fichiers avec "~" dans les projets java?
- 13. Comment effectuer une recherche de texte intégral dans des fichiers plats avec Perl?
- 14. Obtenir une liste de tous les fichiers dans un répertoire
- 15. source tous les fichiers dans un répertoire de .bash_profile
- 16. Comment déplacer tous les fichiers mp3 dans un seul répertoire?
- 17. Comment lister les fichiers texte dans le répertoire sélectionné dans une liste?
- 18. Recherche de texte dans un tableau avec jQuery
- 19. Recherche de mots-clés dans un texte avec une hashtable
- 20. PHP mkdir ($ récursive = true) saute dernier répertoire
- 21. TCL: Recherche récursive des sous-répertoires pour la source de tous les fichiers .tcl
- 22. Problème avec les chemins dans un java java
- 23. Commande pour compresser tous les fichiers/dossiers sous un répertoire
- 24. Recherche plein texte dans LINQ
- 25. Comment effectuer une recherche récursive dans des sous-rubriques autoréférentielles?
- 26. Comment obtenir tous les fichiers dans un répertoire avec certaine extension en C#?
- 27. fichier batch Copier les fichiers avec certaines extensions de plusieurs répertoires dans un répertoire
- 28. Rechercher dans le répertoire SVN pour les fichiers avec une extension de fichier spécifique et copier dans un autre dossier?
- 29. Utilisation de la recherche en texte intégral avec des fichiers PDF dans SQL Server 2005
- 30. Lire plusieurs fichiers texte dans un dossier
+1 parce que, haha –
+1, mais devrait être nouveau String [] { "- r"} bel exemple –