Komplette File Directory durchsuchen wie?

Funresort

Erfahrenes Mitglied
Hi,

Hab schon ne Weile gegooglt, leider komm ich einfach nicht dahinter wie das funktionieren soll... Hab es über die Pfadangabe, file.getParentFile etc versucht. Komme nicht unter das Verzeichnis meines Programms, sondern kann nur ab diesem suchen... Hat jemand ne Idee wie das lösbar ist? Bin schon am verzweifeln und benötige das dringend für mein Projekt :)

Gruß Chris
 
Zuletzt bearbeitet:
Ehrlich gesagt wird mir nicht ganz klar, was eigentlich das Problem ist.

Komme nicht unter das Verzeichnis meines Programms, sondern kann nur ab diesem suchen...

Heißt das, du willst z.B. von dem gegeben Pfad C:\foo\bar auf C:\foo zugreifen? Das wäre das reine String-Verarbeitung, indem du das letzte Backslash mit Bezeichnung abschneidest.
 
Hi, weiß auch nicht hunderprozentig worauf du hinaus willst.
Wenn du die Wurzelverzeichnisse suchst (bspw. C:/) hilft dir
Code:
File.listRoots();
 
Kann auch sein das ich nen Programmierfehler eingebaut habe^^ :) Hier mal das Coding :) Also nochmal mein Ziel ist es sozusagen die Festplatte zu durchsuchen :)

Java:
package install;

import java.io.File;

public class CopyDataTo {
	
	
	public static void copyTo(String location, File f){

	}
	public static String searchPath(String name){
		File f = new File(".");
		while (f.getParentFile() != null){
			f = f.getParentFile();

		}
		return searchDir(f, name);
		
	}
	
	public static String searchDir(File f, String search) {
		String zwisch = "";
		if (f.exists()){
			File[] files = f.listFiles();
			for (File file : files){
				if (file.isDirectory()){
					zwisch = searchDir(file, search);
					if (zwisch != "" && zwisch.contains(search)){
						return zwisch;
					}
				} else {
					if (file.getName().contains(search)){
						return file.getName();
					}
				}
			}
			
		}
		
		zwisch = "";
		return zwisch;
		
	}
}
 
Ich kann leider nicht auf die parentverzeichnisse zugreifen, diese werden schlichtweg nicht angezeigt

Sollte allerdings das oberste Verzeichnis durch diese Codestelle bekommen
Java:
        while (f.getParentFile() != null){
            f = f.getParentFile();
 
        }
 
Hallo,

schau mal hier:

Mit Java 7:
Java:
package de.tutorials.training;

import java.io.File;
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;

public class FileTraversal {

    public static void main(String[] args) throws IOException {

        final String searchPattern = "marks.txt";
        Path startPath = Paths.get("c:/temp/wwwroot");
        final List<Path> results = new ArrayList<Path>();

        Files.walkFileTree(startPath, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<Path>(){
            @Override
            public FileVisitResult visitFile(Path filePath, BasicFileAttributes attrs) throws IOException {

                File file = filePath.getFileName().toFile();
                if(file.getName().matches(searchPattern)){
                    results.add(filePath);
                }

                return FileVisitResult.CONTINUE;
            }
        });

        System.out.println(results);
    }
}

Mit Java 8:
Java:
package d.tutorial.training;

import java.io.File;
import java.io.IOException;
import java.nio.file.FileVisitOption;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class FileTraversal {

    public static void main(String[] args) throws IOException {

        String searchPattern = "marks.txt";
        Path startPath = Paths.get("c:/temp/wwwroot");


        List<Path> results = Files
                .walk(startPath, Integer.MAX_VALUE, FileVisitOption.FOLLOW_LINKS)
                .filter(filePath -> filePath.getFileName().toFile().getName().matches(searchPattern))
                .collect(Collectors.toList());

        System.out.println(results);
    }
}

Gruß Tom
 
Zurück