file suchen in verzeichnis und unterverzeichnissen

tinella

Erfahrenes Mitglied
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:

Code:
	/**
	 * 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? :confused:
ich hab nirgends ein codebeispiel gefunden, nach was würdet ihr da suchen?

vielen dank!
tinella
 
Zuletzt bearbeitet:
Hallo,
wenn ich mich richtig erinnere, dann kannst du ein File Object anlegen
und einfach die Methode next() benutzen... natürlich die Exception abfangen!
 
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

Code:
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.
 
Hallo!

Schau mal hier:
Code:
 /**
 * 
 */
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
 
Zurück