Hallo,
ich möchte Dateien eines Ordners und deren Unterordner auflisten.
Das habe ich bisher auch schon geschafft:
Das Ganze starte ich mit der Konsole und gebe es mit ihr auch wunderbar aus.
Ich muss dem Programm zwei Parameter übergeben, z.b.
oder in meinem Fall noch
Das erste Argument steht für den Ordner, also so benötige ich es bei mir und das zweite Argument steht für die Endung.
Nun will ich zwei Dinge verändern.
Ich will das mit den Argumenten so lassen, aber will bei der Ausgabe nicht den Ordner dazu bekommen, der als Argument übergeben wurde. Ein Beispiel:
Die class oder jar ist in einem Ordner "program" und darin ist auch ein anderer Ordner "src".
Jetzt soll jede .java Datei aus diesem src-Ordner ausgegeben werden mit ihrem Package-Namen.
Z.b. /main/Main.java
Doch wird es so ausgegeben: /src/main/Main.java
Ich könnte den String zwar editieren, doch möchte ich, dass der von Anfang an nicht in den String mit gezogen wird.
Also, wie könnte ich das sauber lösen?
Und ihr könnt vllt. sehen, dass im Code, der Methode 64 übergeben wird, das finde ich auch nicht wirklich schön.
Die 64 steht ja für die Länge des Arrays, aber man kann ja nie wissen wie viele Dateien in den Ordnern sind, wie kann ich das auch sauber lösen?
Vielen Dank.
ich möchte Dateien eines Ordners und deren Unterordner auflisten.
Das habe ich bisher auch schon geschafft:
Java:
import java.io.File;
public class ListFile {
public static void main(String[] args) {
String[] FILES = getFiles("/" + args[0] + "/", args[1], 64);
for(String NAME : FILES) {
if(NAME != null)System.out.println(NAME);
}
}
private static String[] getFiles(String DIRECTORY, String ENDING, int LENGTH) {
String[] FILE_NAMES = new String[LENGTH];
File[] LIST = new File(System.getProperty("user.dir") + DIRECTORY).listFiles();
int i = 0;
for(File FILE : LIST) {
if(FILE.getName().endsWith(ENDING)) {
FILE_NAMES[i] = DIRECTORY + FILE.getName();
i++;
} else if(FILE.isDirectory()) {
String[] FILES = getFiles(DIRECTORY + FILE.getName() + "/", ENDING, LENGTH);
for(String NAME : FILES) {
if(NAME != null) {
FILE_NAMES[i] = NAME;
i++;
}
}
}
}
return FILE_NAMES;
}
}
Das Ganze starte ich mit der Konsole und gebe es mit ihr auch wunderbar aus.
Ich muss dem Programm zwei Parameter übergeben, z.b.
Code:
java -jar ListFile.jar src .java
Code:
java ListFile src .java
Das erste Argument steht für den Ordner, also so benötige ich es bei mir und das zweite Argument steht für die Endung.
Nun will ich zwei Dinge verändern.
Ich will das mit den Argumenten so lassen, aber will bei der Ausgabe nicht den Ordner dazu bekommen, der als Argument übergeben wurde. Ein Beispiel:
Die class oder jar ist in einem Ordner "program" und darin ist auch ein anderer Ordner "src".
Jetzt soll jede .java Datei aus diesem src-Ordner ausgegeben werden mit ihrem Package-Namen.
Z.b. /main/Main.java
Doch wird es so ausgegeben: /src/main/Main.java
Ich könnte den String zwar editieren, doch möchte ich, dass der von Anfang an nicht in den String mit gezogen wird.
Also, wie könnte ich das sauber lösen?
Und ihr könnt vllt. sehen, dass im Code, der Methode 64 übergeben wird, das finde ich auch nicht wirklich schön.
Die 64 steht ja für die Länge des Arrays, aber man kann ja nie wissen wie viele Dateien in den Ordnern sind, wie kann ich das auch sauber lösen?
Vielen Dank.
Zuletzt bearbeitet: