Hallo,
ich möchte gern mit meinem Programm zusammen (Jar-Archiv) ein Handbuch (pdf-Datei) ausliefern, welches sich über F1-Taste öffnet. Dass man diese pdf-Datei nicht direkt mit
öffnen kann habe ich schon gelernt.
Als Lösung habe ich erfahren, dass man die Datei einfach aus dem Jar-Archiv befreien und sie ins normale Dateisystem (z. B. Temp-Verzeichnis) bringen muss. Soweit so gut. Nun habe ich die wildesten Code-Beispiele gesehen, wie dies erfolgen könnte (über Streams teils gepuffert usw.).
Ich wollte nicht wahr haben, dass dafür so ein "Aufwand" betrieben werden muss und habe eine schlichte Lösung programmiert.
Jetzt die Frage: Ist diese Lösung nicht optimal oder was würdet ihr anders machen (und warum)?
ich möchte gern mit meinem Programm zusammen (Jar-Archiv) ein Handbuch (pdf-Datei) ausliefern, welches sich über F1-Taste öffnet. Dass man diese pdf-Datei nicht direkt mit
Code:
Desktop.getDesktop().open()
Als Lösung habe ich erfahren, dass man die Datei einfach aus dem Jar-Archiv befreien und sie ins normale Dateisystem (z. B. Temp-Verzeichnis) bringen muss. Soweit so gut. Nun habe ich die wildesten Code-Beispiele gesehen, wie dies erfolgen könnte (über Streams teils gepuffert usw.).
Ich wollte nicht wahr haben, dass dafür so ein "Aufwand" betrieben werden muss und habe eine schlichte Lösung programmiert.
Java:
URL url = getClass().getResource("/de/package/hlp/Benutzerhandbuch.pdf");
Path copyTargetPath = Paths.get(System.getProperty("java.io.tmpdir") + "/Benutzerhandbuch.pdf");
Path copySourcePath = null;
if (!Files.exists(copyTargetPath)) {
try {
copySourcePath = Paths.get(url.toURI());
Files.copy(copySourcePath, copyTargetPath);
} catch (URISyntaxException | IOException ex) {
System.out.println("Konnte Benutzerhandbuch nicht kopieren.");
}
}
try {
Desktop.getDesktop().open(copyTargetPath.toFile());
} catch (IOException ex) {
System.out.println("Konnte Benutzerhandbuch nicht öffnen.");
}
Jetzt die Frage: Ist diese Lösung nicht optimal oder was würdet ihr anders machen (und warum)?
Zuletzt bearbeitet: