# file suchen in verzeichnis und unterverzeichnissen



## tinella (19. Januar 2006)

*hallo leute*  

bitte mag mir jemand helfen wer die antwort auf folgende frage weiss:

ich habe eine verzeichnisangabe, zb. C:/Projects
in diesem Verzeichnis befindet sich eine JarDatei und zwei weitere Verzeichnisse mit je einer Jardatei drin, also:

_C:/Projects/normales.JAR
C:/Projects/Verzeichnis1/erstes.JAR
C:/Projects/Verzeichnis2/zweites.JAR_

ich habe bis jetzt code zusammen der mir den pfad und den namen von _normales.JAR _ zurückgibt:


```
/**
	 * Search Jarfiles.
	 */
	public static void searchFile() {
		File jarFile = new File("C:\\PROJECTS\\JarOne");
		String[] resultJarFile = jarFile.list();
		
		for (int j = 0; j < resultJarFile.length; j++)
		{
			if (resultJarFile[j].endsWith(".jar"))
				System.out.println(jarFile + resultJarFile[j]);
		}
	}
```

*wie mache ich das jetzt, dass er mir auch noch die unterverzeichnisse durchsucht und den pfad und namen derer zurückgibt?*  
ich hab nirgends ein codebeispiel gefunden, nach was würdet ihr da suchen? 

vielen dank!
tinella


----------



## HermeZ (19. Januar 2006)

Hallo,
wenn ich mich richtig erinnere, dann kannst du ein File Object anlegen 
und einfach die Methode next() benutzen... natürlich die Exception abfangen!


----------



## illaX (19. Januar 2006)

Du fragst nach, ob dein file ein Directory ist, wenn ja dann soll er dort wieder alle files auslesen und die *.jars auslesen.

Ich habe mal eine Klasse geschrieben um ein Verzeichniss zu loeschen, da ich aber erst alle Dateien/Unterverzeichnisse loeschen muss...
Hier ist mal der source


```
public class DeleteTmpDIR {

    /**
     * Delete subdirectories and files
     *
     *
     * @param file
     */
    public static void deleteFile(File file) {
        File[] files = file.listFiles();
        ArrayList arrDirectory = new ArrayList();
        
        // delete files in the directory and add subdirectories in an array
        for(int i = 0; i < files.length; i++) {
            try {
                if(files[i].isDirectory()) {
                    arrDirectory.add(files[i]);
                } else {
                    files[i].delete();
                }
            } catch(Exception e) {
                e.printStackTrace();
                continue;
            }
        }
        
        // delete files in the subdirectories
        for(int i = 0; i < arrDirectory.size(); i++) {
            try {
                deleteFile(((File) arrDirectory.get(i)));
            } catch(Exception e) {
                e.printStackTrace();
                continue;
            }
        }
        
        // delete subdirectories which no files contain
        for(int i = 0; i < arrDirectory.size(); i++) {
            File delFile = (File) arrDirectory.get(i);
            delFile.delete();
        }
    }
}
```

anstatt das du die Dateien loescht ueberpruefst du die Endung und gibst es aus, wie du es schon gemacht hast.


----------



## tinella (19. Januar 2006)

hey *danke * vielmals


----------



## flashray (19. Januar 2006)

Hallo Kristina,

Hier findest du jede Menge Beispiele:

Java Almanac - java.io examples 

Java Insel - Datei und Verzeichnis 

Vg Erdal


----------



## Thomas Darimont (19. Januar 2006)

Hallo!

 Schau mal hier:

```
/**
 * 
 */
package de.tutorials;

import java.io.File;
import java.util.LinkedList;
import java.util.List;

/**
 * @author Tom
 * 
 */
public class JarFinderExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        List jarFileList = new LinkedList() {
            public String toString() {
                return super.toString().replace(", ", "\n");
            }
        };
        
        lookForJarFilesIn(new File(
                "E:/springframework/2.0M1/spring-framework-2.0-m1"),
                jarFileList);
        
        System.out.println(jarFileList);
        System.out.println(jarFileList.size() + " items found!");
    }

    private static void lookForJarFilesIn(File location, List list) {
        if (location.isDirectory()) {
            File[] files = location.listFiles();
            for (int i = 0; i < files.length; i++) {
                lookForJarFilesIn(files[i], list);
            }
        } else {
            if (location.getName().endsWith(".jar")) {
                list.add(location);
            }
        }
    }
}
```
 
 gruß Tom


----------

