Hallo,
ich habe shcon einige Beiträge hier im Forum gelesen, die mir auch häufig weitergeholfen haben.
Jetzt sitzte ich aber vor einem Problem das ich nicht lösen kann....
Es dreht sich um folgendes:
Wir haben eine Java Applikation die über Java Webstart über einen Link im Intranet gestartet wird.
Diese Anwendung liest beim Start direkt aus einer XML Datei. Diese XML Datei liegt Normaler weise in dem Ordner C:\temp. Das klappt soweit auch ganz gut. Allerdings muss diese Datei bei dem aller ersten Start des Programms nach C:\temp kopiert werden. Dazu haben wir eine Methode geschrieben, die prüft ob es die XML schon in dem Ordner gibt, wenn nicht dann soll sie dorthin kopiert werden. Die Datei liegt im JAR-File, welches auch das ganze Programm enthält.
Starte ich die JAR-File direkt, dann kopiert er die Datei beim ersten start in das Verzeichnis C:\temp. Starte ich das Programm über die jnlp Datei, oder den Link im Intranet, so findet er die Datei nicht in dem JAR-File und kann sie folglich auch nicht kopieren.
Kann mit jemand sagen wie am einfachsten und sichersten eine XML-File aus dem JAR-File auf das Dateisystem bekomme, wenn die JAR über Webstart gestartet wurde?
Sitzte da nun schon seit ca. fünf Stunden dran.
Hier der Aktuelle Code:
die Message Dialoge dienen mir nur zur Fehler suche.
Hoffe mir kann jemand helfen.
Gruß noxar aka Erik
ich habe shcon einige Beiträge hier im Forum gelesen, die mir auch häufig weitergeholfen haben.
Jetzt sitzte ich aber vor einem Problem das ich nicht lösen kann....
Es dreht sich um folgendes:
Wir haben eine Java Applikation die über Java Webstart über einen Link im Intranet gestartet wird.
Diese Anwendung liest beim Start direkt aus einer XML Datei. Diese XML Datei liegt Normaler weise in dem Ordner C:\temp. Das klappt soweit auch ganz gut. Allerdings muss diese Datei bei dem aller ersten Start des Programms nach C:\temp kopiert werden. Dazu haben wir eine Methode geschrieben, die prüft ob es die XML schon in dem Ordner gibt, wenn nicht dann soll sie dorthin kopiert werden. Die Datei liegt im JAR-File, welches auch das ganze Programm enthält.
Starte ich die JAR-File direkt, dann kopiert er die Datei beim ersten start in das Verzeichnis C:\temp. Starte ich das Programm über die jnlp Datei, oder den Link im Intranet, so findet er die Datei nicht in dem JAR-File und kann sie folglich auch nicht kopieren.
Kann mit jemand sagen wie am einfachsten und sichersten eine XML-File aus dem JAR-File auf das Dateisystem bekomme, wenn die JAR über Webstart gestartet wurde?
Sitzte da nun schon seit ca. fünf Stunden dran.
Hier der Aktuelle Code:
Java:
ProtectionDomain protectionDomain = this.getClass().getProtectionDomain();
CodeSource codeSource = protectionDomain.getCodeSource();
URL location = codeSource.getLocation();
File fu = new File(location.getFile());
JOptionPane.showMessageDialog(null,
"erzeuge pfad zur jar datei: " + fu.getAbsoluteFile() + "\n" + location.getFile());
String resourcePath = "data/BabyPrinter.xml";
InputStream resourceStream = null;
if (fu.isFile())
{
JOptionPane.showMessageDialog(null, "Ja es ist eien datei");
// it's a file, so we assume it's a jar and look for our
// resource as a JarEntry
JarFile jar = new JarFile(fu);
JarEntry xmlfile = jar.getJarEntry(resourcePath);
resourceStream = jar.getInputStream(xmlfile);
}
else
{
JOptionPane.showMessageDialog(null, "keine datei, versuche pfad anzupassen");
// it's a directory, so we just append our relative resource
// path
resourceStream = new FileInputStream(fu.getAbsolutePath() + "/" + resourcePath);
}
JOptionPane.showMessageDialog(null, "noch da?");
File file = new File("BabyPrinter1.xml");
DataInputStream dis = new DataInputStream(resourceStream);
FileOutputStream fos = new FileOutputStream(file);
int va;
while ((va = dis.read()) != -1)
{
fos.write(va);
}
// ------------------------------------------------------------------------
FileInputStream in = new FileInputStream(file);
FileOutputStream out = new FileOutputStream(f);
FileChannel inChannel = in.getChannel();
FileChannel outChannel = out.getChannel();
inChannel.transferTo(0, inChannel.size(), outChannel);
if (inChannel != null)
inChannel.close();
if (outChannel != null)
outChannel.close();
}
die Message Dialoge dienen mir nur zur Fehler suche.
Hoffe mir kann jemand helfen.
Gruß noxar aka Erik