Moin,
folgendes Problem. Am Anfang meines Programms frage ich durch User Eingabe einen Pfad ab und speichere diesen in einem String ab.
An dem Problem Punkt möchte ich die Dateien die in einem Unterordner sind zählen um damit weiterzuarbeiten. Dazu hab ich folgenden Code benutzt:
[CODE lang="java" highlight="1, 3"]File pathxxxfile = new File(PATHXXX); //den String in File konvertieren
File fileending = new File(".txt") ; //Variable für .list erstellen um Programm Fehler zu vermeiden
File amountsvg = pathxxxfile +"/xxx/" ; //String für den Pfad zum Unterverzeichnis erstellen
String [] list = amountxxx.list((FilenameFilter) fileending) ; //Dateien zählen
int amount = list.length; //int erstellen mit Gesamtanzahl Dateien
[/CODE]
Soweit so gut. Wenn ich jetzt keinen massiven Gedankenfehler habe, dann habe ich den String eigentlich mit der ersten Zeile in ein File konvertiert, Eclipse spukt mir aber bei der 3. Zeile "pathsvgfile +"/svg/"" den Fehler "Type mismatch: cannot convert from String to File" aus.
Die Zeile 3 String statt File zu nutzen ist aufgrund des .list ungüntig.
Die Eingabe des Pfades direkt als File einzuspeichern ist auch schlecht, da ich an anderen Stelle den Pfad als String benötige.
Also sehe ich aktuell 2 Möglichkeiten. Entweder den den Pfad als String und in einer temporären Datei zu speichern, den Pfad an der Stelle als aus der Datei auslesen und anschließend als File abzuspeichern. Wäre in meinen Augen aber viel zu umständlich und das konvertieren in File wäre defivinit die einfachere Möglichkeit.
Hat jemand zufällig ne Idee wo genau der Fehler liegt oder evtl eine passende anderweitige Lösung für das Problem?
Greetz JoeJoke
PS. Musste aufgrund von Interna einige stellen abändern, der Code ist aber der gleiche.
Na schau, du hast in der der Zeile folgende Datentypen:
Code:
File = File + String;
"+" mit einem String ergibt immer einen String, es passiert immer eine String-Konkatinierung, also effektiv hast du den Aufruf:
Java:
File amountsvg = pathxxxfile.toString()+"/xxx/";
Und daraus ergibt sich, String kann man nicht einem File zuweisen. Du musst entweder ein neues File mit deinem zusammengehaengten Pfad erstellen. Oder besser waere wenn du die neue java.nio API verwendest.
Ergänzend zu dem, was @Robert Zenz schon gesagt hat, noch fogender Hinweis: File ist eine eigenartige Klasse: Sie ist ein Mittelding zwischen dem Dateinamen und dem Dateizugriff.
Aber es handelt sich nicht nur um den Dateinamen. Und damit kannst du auch keinen String anhängen.
Versteh ich das richtig, dass dies den Pfad zu einer bestimmten Datei ausliest? Dann ist das ehre uninteressant für mich. Zumindest für dieses Problem.
Mit
Java:
Path
muss ich mich erstmal genauer beschäftigen um damit abeiten zu können.
String[] list = amountxxx.list((FilenameFilter) fileending);
. Nach erzwungenen weiter gehen wird der Fehler
Java:
Exception in thread "main" java.lang.ClassCastException:class java.io.File cannot be cast toclass java.io.FilenameFilter(java.io.File and java.io.FilenameFilter are in modulejava.base of loader 'bootstrap')
ausgespuckt. Weiß jemand, wo dort der Fehler liegen könnte?
Na weil einString kein FilenameFilters ist, du musst schon die entsprechende Klasse erstellen (casten ist keine Erstellung, casten ist das pressen in eine andere Form).