Datei verschieben

eLogic

Aktives Mitglied
Kann man eine Datei die vor der Erstellung der RunnableJar, im "src" Verzeichnis liegende Datei bla.jar beim Ausführen an einen anderen Ort verschieben\kopieren?
 
also ich hab eine datei "main.jar" ich will das diese Datei der Datei bla.jar mitgeben(main soll also in der bla drin sein).

Jetzt sobald ich bla.jar ausführe soll die main.jar an einen angegebenen Pfad kopiert werden..

Ist das möglich?
 
Du kannst natürlich mehrere JARs zu einem Jar zusammenführen indem du jedes jar einzeln entpackst, zusammenführst und aus dem gesamten ein Jar machst.

Gibt es einen bestimmten Grund, warum du das so machen willst? 2 einzelne Jar kannst du ja auch beim Aufruf von java -classpath angeben.
 
also es geht darum eine .jar zu haben die bein aufruf ein Autostart eintrag in die registry schreibt. anschließend soll sie eine jar datei aus sich selber an einen bestimmten Pfad kompieren..

Ich hab alles hinbekommen außer das die Datei sich verschiebt.. hier mein Code:
(datei befindet sich zurzeit des Programmierens im SRC ordern..
wenn ich es im test aus eclipse starte verschiebt er die datei.. wenn ich es kompiliere klappt es nicht mehr)

Java:
public static void mainVerschieben(){
	             try { 
			File quellDatei = new File("src\\main.jar");
		System.out.println(quellDatei.toString());
		File zielDatei = new File("c:\\windows\\src\\main.jar");
		quellDatei.renameTo(zielDatei); 
		System.out.println("Ausgeführt");
		} catch (Exception e) { 
			System.out.println("FEHLER BEIM VERSCHIEBEN");
		}
	}

Vielleicht müsste ja vor File * src\\main.jar"); iwie ein Zeichen das relativ was angibt oder so??
 
Morgen,

gib bitte die Exception aus, dass sollte uns evtl helfen.

Kann man so einfach was ins Windowsverzeichnis verschieben, ich bezweifel das zumindest. :bahnhof:
 
Es gibt keine exeptions es passiert einfach nichts.. wenn ich das programm im test starte verschiebt er das wenn ich mein Projekt als jar exportiere verschiebt er die datei nicht aus sich selber???
 
Ich glaube eher, dass es daran liegt, dass sich eine Datei nicht selber verschieben kann. Verschieben heisst an einem Ort löschen und da die Datei gerade ausgeführt wird geht das nicht.

Das zweite Thema sind die Schreibrechte im Zielordner ...
 
wie könnte ich es denn hinbekommen dass wenn ich eine .Jar ausführe, sich eine Jar an einen angegebenen Ort schreibt??
Geht das?
 
Warum willst du denn eine JAR in die Windows-Registry verschieben? Ich weiß nicht, das klingt alles nach großem Käse. Und irgendwie finde ich, dass sich das nicht gehört, einfach dem Benutzer irgendwelche Dateien irgendwohin zu schieben.
 
Nein die Jar soll nicht in die Registry... Och Mädels🙁

Also es ist eine Jar datei...

Man ruft sie auf und dann kommt ein Fenster.. Installieren.
Wenn man auf den Button drückt soll eine Jar datei an einen Ort geschrieben/kopiert (wie auch immer) werden.

Anschließend wird eine Batch Datei aufgerufen die einen Autostart Registry Eintrag macht an die stelle wo die kopierte Jar sich befindet.

Meinetwegen kann sich die Jar auch einfach in den Autostart ordner kopieren ist egal...


Das Programm soll halt nach der "Installation" immer wenn man den PC startet aufgerufen werden aber ich bekomme das nicht hin.

Im großen und ganzen geht es um einen Downloader der von einer bestimmten Seite FreeMusik lädt.. und wenn man denquasi "installiert" soll er bei Systemstart aufgehen und da weiterladen wo er aufgehört hat.
Hab alles hinbekommen außer das ich die Jar datei an einen angegebenen ordner bekomme :autsch:
 
Zuletzt bearbeitet:
Wenn du unbedingt willst, dass ein Java-Programm sich selbst kopiert, dann könnte man das so machen (hier nur ein ganz einfaches Beispiel - Packages, innere Klassen etc. musst du dann je nach Notwendigkeit anpassen):
Java:
import java.io.*;

public class SichKopierendeKlasse {
	
	public static void main(String[] args) throws IOException {
		SichKopierendeKlasse s = new SichKopierendeKlasse();
		String name = SichKopierendeKlasse.class.getName();
		System.out.println(name);
		
		BufferedInputStream is = new BufferedInputStream(new FileInputStream(
			"src/" + name + ".java")); //src ist mein Eclipse-Ordner
		BufferedOutputStream os = new BufferedOutputStream(
			new FileOutputStream("src/" + name + "2.java"));
		int x;
		while((x = is.read()) != -1) {
			os.write(x);
		}
		os.close();
		is.close();
	}
}


So, nach einmal kurz Googlen fand ich dann diesen Thread, in dem von dem Pfad
Code:
C:\Users\$USERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
die Rede ist. Kannst du ja nochmal verifizieren. Da müssen offenbar die Verknüpfungen rein, wenn bei der Anmeldung dieses bestimmten Nutzers dieses oder jenes Programm gestartet werden soll.
Wie man dann mit Java so eine .lnk-Datei (also eine Verknüpfung) anlegt, so dass diese auf deine JAR zeigt, musst du dann noch selbst herausfinden.


Werden denn die Nutzer deines Programms wenigstens gefragt, ob sie so einen Autostart-Eintrag überhaupt haben möchten, oder wird der so oder so auch ohne ihr Einverständnis angelegt? Falls sie nicht gefragt werden, würde ich an deiner Stelle nochmal darüber nachdenken, da sich Nutzer von sowas schnell genervt fühlen können (gibt eh schon so viel Software, die meint, noch hier eine schöne Desktop-Verknüpfung und da noch einen netten Schnellstartleistenshortcut anlegen zu müssen…).
Im Übrigen verdirbst du dir damit auch die (weitgehende) Plattformunabhängigkeit von Java, da die ganze Sache unter Linux, BSD, Mac etc. so nicht funktionieren wird.

Ich hoffe, ich habe dich diesmal besser verstanden.


Ja, es gibt auch Mädels, die programmieren können. Freut mich, dass du das auch so siehst 🙂
 
Zuletzt bearbeitet:
Haave?? 😳

Tausendundein mal DANKE!!!

Du hast mich richtig weitergebracht funktioniert jetzt genauso wie ich es wollte.. :toll:

Danke, danke danke!

Gruß eLogic
 

Zurück
Oben