directorycontent

Status
Nicht offen für weitere Antworten.

lalas_lany

Mitglied
hi,
ich soll ein Methode schreiben, die alle in einem Verzeichnis existierten unterverzeichnisse auflistet bis es zum End file irgendwas.jar oder irgendwas.zip kommt. und am Ende die in einem String darstellt.
hat jemand eine Idee wie ich es machen könnte.
für jede Hilfe bin ich sehr dankbar
mfg
 

The_S

Top Contributor
Rekrusiv die Verzeichnisse durchgehen bis du auf eine .zip bzw. .jar stößt! Methoden die dafür nützlich sein könnten sind

file#listFiles();
file#isDirectory();
file#getName()#endsWith();
 

lalas_lany

Mitglied
das habe ich schon versucht und zwar ich habe eine methode, die die Files lädt
ich rufe sie mit
loadFiles(/home/bla/jdk1.4, true);
listToString(loadFiles,"/");
beide Methoden sind unten aufgelistet
das Problem ist das file /home/bla/jdk1.5/ hat noch 3 unterverzeichnisse bis er zum Datei.jar ankommt und die werden vom Programm nicht gesehen , wie kann ich auf diese Verzeichnisse zugreifen?
-------------------------------------------------------------------------
private static List loadFiles( File directory,boolean includeSubdirectories)
{
List fileList = null;
if (directory != null)
{
final File[] files = directory.listFiles();
if (files != null)
{
for (int control = 0; control < files.length; control++)
{
File file = files[control];
if (!file.isDirectory())
{
fileList.add(file);
}
else
{
//rekursive aufrufen bis ende
loadFiles(file,includeSubdirectories);
}
}
}
}
return fileList;
}
private String listToString(List a, String separator) {
StringBuffer result = new StringBuffer(60);
for (Iterator iter = a.iterator(); iter.hasNext(); ) {
result.append(iter.next() + separator);
}
return result.toString();
}
 

The_S

Top Contributor
So in etwa, der Code gibt dir dann halt die 1. Datei mit dem angegebenen suffix zurück, die er findet => Zuerst werden von einem ordner alle Unterordner durchsucht bis zum nächsten gesprungen wird. Aber ich denke den Code anzupassen ist kein Thema ;)

Code:
import java.io.*;
import java.util.*;

public class Test {
	
	public File searchTillSuffix(File directory, String suffix) {
		
		File[] files = directory.listFiles();
		Vector<File> dirs = new Vector<File> ();
		for (File file : files) {
			if (file.isDirectory()) {
				dirs.add(file);
			}
			else if (file.getName().endsWith(suffix)) {
				return file;
			}
		}
		for (File dir : dirs) {
			File actDir = searchTillSuffix(dir, suffix);
			if (actDir != null) {
				return actDir;
			}
		}
		return null;
	}
	
	public static void main(String[] args) {
		
		System.out.println(new Test().searchTillSuffix(new File("C:/"), ".jar"));
	}
}
 

norman

Top Contributor
deine Liste musst du außerhalb der methode erstellen, damit du innerhalb die gefundenen ordner zufügen kannst.

in der methode überprüfst du alle files, die von listFiles zurückkommen, obs es sich um ein dir handelt. wenn ja, adde das dir zu deiner liste und rufe die methode mit dir als parameter rekursiv auf.
wenn du deine datei findest, schreibe return und die methode ist fertig.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben