wie der Name schon sagt, möchte ich gerne eine Image Datei, die ich über den FileChooser auswähle in das Projekt Verzeichnis kopieren. Von der Herangehensweise, hab ich das Gefühl, alles bedacht zu haben. Wenn ich es in der laufenden App probiere, kommt auch keine Exception. Es passiert aber auch nichts. Hier ist der Code:
Code:
FileChooser filechooser = new FileChooser();
File file = filechooser.showOpenDialog(null);
File dest = new File("@File:\\src\bilder");
if (file != null) {
try {
Files.copy(file.toPath(), dest.toPath(), StandartCopyOptions);
} catch (IOException e) {
e.printStackTrace();
}
}
Zu meiner Denkweise:
Ich wähle das File über den Filechooser aus, welches dann in file gespeichert wird. Das File dest soll angeben, wohin die neue Datei kopiert werden soll.
Ich habe ja die Maskierung im "File dest" in Verdacht^^.. Aber ich hatte mich da an die Dokumentation gehalten.
Sicher, dass "@File:\\src\bilder" ein valider Pfad ist? (Bzw, ist er durch das '\b' in jedem Fall nicht, das @FiLe sieht aber auch komisch aus...)
"bilder" ist auch vermutlich ein (existierendes) Verzeichnis - dein Bild soll vermutlich in dieses Verzeichnis kopiert werden, und es nicht ersetzen (je nach CopyOptions), du müsstest also einen Pfad innerhalb dieses Ordners angeben.
Ich hab grad geguckt. Es hatte bei mir sogar schon funktioniert. Er brachte eine Exception, dass das Bild an der besagten Stelle schon existiert. Allerdings wurde mir nichts im Projekt Folder angezeigt. Aber ich hab mal den Workspace geöffnet und reingeschaut und sah tatsächlich das Bild. Es wurde kopiert.
Ich hätte aber gerne, dass es auch in dem Project Folder angezeigt wird. Ich hatte auch mal Eclipse geschlossen und wieder geöffnet.
Es ist zwar im Ordner bilder im Workspace,aber nicht in der IDE in dem Ordner. Woran liegt das?
es ist meine Schuld, dass mein voran gegangener Post aufgrund meines Doppelposts übersehen wurde. Ich würde gerne wissen, wo der Fehler in dem Path ist. Denn: Die Datei wird tatsächlich in meinen gewünschten Ordner kopiert. Allerdings sehe ich diese Datei nur, wenn ich den den Workspace aufmachen und dort in die Ordner reinschaue. In der IDE, wo sich der Ordner ja ebenfalls befindet, wird die Datei nicht angezeigt. Und ich habe den Pfad überprüft und erkenne da keinen Fehler
Kann es sein, dass durch mein Weg es nur in den Folder kopiert wird, aber nicht direkt in die Application? Da sich ja das Bilder Package außerhalb der application ist und dadurch die Informationen nicht bekommt?
Ich gebe zu, ich hätte mir ein Lösungsvorschlag erhofft. Aber ich verstehe natürlich dass du mir vermitteln möchtest, selbst danach zu suchen, da so der Lerneffekt größer ist.
Ok das hab ich getan. Ich hab das Problem verstanden und auch eine Lösung.
Und zwar habe ich jetzt dem Build Path den Ordner hinzugefügt, wo die Bilder eingespeichert sind.
Da mein Anspruch es ist, sauber und gut zu programmieren, jetzt meine Frage an euch Fachleute:
Ist das eine saubere Lösung? Oder eher ein Notbehelf für Leute die es nicht besser wissen.
Aha. Interessant. Sry, das ist jetzt mein erstes Java Projekt. Falls ein paar Fragen seltsam erscheinen
Also eher weniger erstrebenswert. Was wäre denn ein guter Weg? Im fertigen Programm sollen dann auch noch Bilder hinzugefügt oder gelöscht werden können.
Ich gebe zu, ich hätte mir ein Lösungsvorschlag erhofft. Aber ich verstehe natürlich dass du mir vermitteln möchtest, selbst danach zu suchen, da so der Lerneffekt größer ist.
Wenn sich beispielsweise Pläne ändern. Mir stellt sich eher die Frage, warum ein Benutzer es nicht ändern sollte? Das ist nämlich eine Kern Funktion in dem was ich vorhabe.
Ja, es ist kein guter Weg. Was wäre denn ein guter Weg?
Ich möchte über einen FileChooser ein Image auf dem Computer auswählen können, dass anschließend an einer Stelle gespeichert wird, vorzugsweise da, wo das Programm installiert ist.
Eine Datenbank hält die Pfade zu den Bildern(die dann innerhalb der Application gespeichwert werden sollen). Und über einen Slider und dessen Index wird entsprechend des Indexes das richtige Bild in einem ImageView angezeigt. An diese Bilder sind noch andere Dinge gekoppelt. Da ich das ganze modular und dynamisch aufbauen möchte, ist es wie bereits gesagt erforderlich, dass der Nutzer Bilder hinzufügen oder löschen kann...
Ich möchte über einen FileChooser ein Image auf dem Computer auswählen können, dass anschließend an einer Stelle gespeichert wird, vorzugsweise da, wo das Programm installiert ist.
Das ist etwas völlig anderes, denn hier fügst Du keine Ressourcen zum Programm hinzu, sondern legst einfach Daten im Dateisystem ab, was natürlich problemlos möglich ist. Allerdings willst Du die Dateien nicht (zumindest nicht automatisch/standardmäßig) dort speichern, wo das Programm installiert ist, denn auf das Verzeichnis hat der Benutzer oftmals keinen Zugriff.
Alternativ kann man den Speicherort beim Aufruf des Programms mitgeben, als Parameter, System-Property bzw. Umgebungsvariable. Möglichkeiten gibt es genug.