Erstmal zur Info: Ich benutze Eclipse und programmiere nicht sehr lange. Außerdem bringe ich mir es selbst bei, was die Sache umso schwerer macht.
Hier mal mein Quelltext:
Code:
public static void main(String args[]) {
[...]
File dir = new File("J:/Musik/Singles/Hip Hop/");
File[] fileList = dir.listFiles();
for(int g = 0; g < fileList.length; g++){
String pfad = (fileList[g].getPath() + "*");
String[] pfadliste = pfad.split("\\*");
}
[...]
}
Ich ich habe folgendes Problem:
Ich habe eine Verzeichnis "dir". Dann erstelle ich ein File Array "filelist" indem ich die Datei mit dir.listFiles() auflisten lasse.
Nun mache ich eine eine For-schleife um damit ich eine Variable "g" für das File Array hab.
Jetzt erstelle ich einen String "pfad" mit filelist[g].getPath() + "*" um alle Dateipfade des Verzeichnis zu bekommen.(Das "*" ist um den String später zu teilen)
Jetzt mache ich ein String Array "pfadliste" indem ich den String "pfad" mit split("\\*") teile.
Nun habe ich das Problem. Ich die einzelnen Elemente des String Arrays nicht ausgeben lassen.
Denn immer wenn ich bspw. System.out.print(pfadliste[1]); schreibe, kommt der Fehler:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
Ich hoffe mir kann jemand helfen. Schon mal Danke für eure Antworten
wenn ich deine Beschreibung richtig verstehe hängst du an jeden Pfad einfach ein Sternchen dran und versuchst
nachher den daraus resultierenden String an der Stelle des Sternchens aufzuteilen?
Das macht aber wenig Sinn, da nach dem Sternchen ja nichts mehr kommt. Gib mal "pfadliste[0]" aus, darin
müsste der Pfad stehen, denn der Array-Index fängt bei Null an.
Ansonsten poste mal mehr Code, so einer Beschreibung zu folgen ist sehr mühsam.
also ich tippe auf einen Fehler bei der Erstellung des
Strings "pfad" oder beim erneuten aufsplitten. Da solltest
du einfach mal debuggen und dir die Variablen ansehen.
Eventuell wäre es sinnvoller nur split("*") zu verwenden.
Jedoch wie bereits auch schon erwähnt wurde, wäre es
sinnvoller alles im Array zu lassen und (wenn benötigt,
z.B. für Sockets) zu serialisieren.
Ich verstehe nicht, wieso du das mit dem * machst, mit fileList[g] bekommst du doch bereits nur ein Element aus dem Array... Ein Pfad besitzt kein * und wenn du hinter den Pfad ein * anhängst und den dann über * splittest, hast du in deinem Ergebnisarray immer nur den Pfad selbst, welcher den Index 0 hat. Ein weiteres Element gibt es nicht, wodurch es bei dem Index 1 schließlich zum Fehler kommt.
Eventuell wolltest du soetwas machen...
[Java]
File dir = new File("J:/Musik/Singles/Hip Hop/");
File[] fileList = dir.listFiles();
String[] pfadliste = new String[fileList.length];
for(int g = 0; g < fileList.length; g++){
pfadliste[g] = fileList[g].getPath();
}
[/Java]