| 

.NET C# Java Javascript Exception

2
Hallo,

ich bin noch Neuling in der Programmsprache Java und will eine Liste von Dateien eines bestimmten Ordners (inkl. Unterordner) in der UI ausgeben. Dabei stosse ich auf diese Fehlermeldung: type mismatch: cannot convert from ObservableList<File> to ObservableList<String> .

Wie kann die den Fehler vermeiden, bzw. was muss ich tun, damit der match funktioniert? Danke schon einmal im Voraus.

Hier der Code der Main:

public class Main extends Application {
@Override
public void start(Stage primaryStage) {

try {

VBox root = new VBox();

// Fehlerbereich Anfang
ObservableList<String> items = FXCollections.observableArrayList(FileList.listf("C:/test"));
// Fehlerbereich Ende

ListView<String> list = new ListView<>();
list.setItems(items);
list.setPrefHeight(100);

root.getChildren().add(list);

Scene scene = new Scene(root,400,200);

primaryStage.setTitle("Test");
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}

Hier der Code für die Dateiliste:

public class FileList {

public static List<File> listf(String directoryName) {

File directory = new File(directoryName);
List<File> resultList = new ArrayList<File>();

// get all the files from a directory
File[] fList = directory.listFiles();
resultList.addAll(Arrays.asList(fList));
for (File file : fList) {
if (file.isFile()) {
System.out.println(file.getAbsolutePath());
} else if (file.isDirectory()) {
resultList.addAll(listf(file.getAbsolutePath()));
}
}
//System.out.println(fList);
return resultList;
}

}
News:
20.06.2017
1 Antwort
0
Es ist ganz einfach so, dass man ein Objekt vom Typ 'File' nicht automatisch in einen String konvertieren kann. Das File-Objekt kapselt einen Eintrag im Dateisystem. Neben dem Dateinamen und dem Pfad enthält es z.B. die Dateigröße. Wenn du nur eine Liste von Dateinamen benötigst, solltest du eine Liste von Strings zurückgeben und diese über die Methode getName() des File-Objekts befüllen, z. B. so:

public class FileList {

public static List<String> listf(String directoryName) {

File directory = new File(directoryName);
List<String> resultList = new ArrayList<String>();

// get all the files from a directory
File[] fList = directory.listFiles();
for(File file : fList) {
if(file.isFile()) {
// gibt den Dateinamen inklusive Pfad zurück
resultList.add(file.toString());
} else if(file.isDirectory()) {
resultList.addAll(listf(file.getAbsolutePath()));
}
}
return resultList;
}

}
21.06.2017
luedi 2,0k 1 9
Hallo luedi,

danke für die schnelle Hilfe und der Erklärung. Es funktioniert mit deiner Methode wunderbar. :-)

Beste Grüße
Knäckebrotdose 21.06.2017
Das freut mich. Es wäre schön, wenn du die Antwort als hilfreich markieren und raten würdest.
luedi 22.06.2017

Stelle deine File-Frage jetzt!