Quote:
Originally Posted by Mysthik
Ja wie du bereits festgestellt hast, kannst du die Datei als InputStream lesen.
Verfahren währe dann folgendes:
Code:
1. InputStream öffnen
2. Datei im Temppfad erstellen (am besten Dateiname-TimeStamp.exe) und OutputStream erstellen
(schau dir dafür mal die File.createTempFile(String prefix, String suffix) Funktion an)
3. Solange InputStream.read nicht am Ende
lese byte[] von Input und schreibe byte[] in output
4. Führe Datei aus.
5. Lösche Datei wieder.
|
D.h. also
Code:
1. InputStream stream = BotMain.class.getResourceAsStream("/Bot/Fishingbot.exe"); //InputStream
2. leere .exe erstellen
3.in ner for-Schleife die Bot.exe in Bot_copy.exe schreiben
4. runtime ausführen
5. löschen
Bin nun soweit:
Code:
public static void copy() throws IOException {
File fSrc = new File("/Main/Fishingbot.exe"); // Quelldatei
File fDes = new File(createTempFile("bot", "exe").getAbsolutePath()); // Zieldatei
FileInputStream fis = new FileInputStream(fSrc); //Stream fuer Quelldatei
FileOutputStream fos = new FileOutputStream(fDes); //Stream fuer Zieldatei
byte buf[] = new byte[1024]; // Buffer für gelesene Daten
while (fis.read(buf) != -1) { // solange lesen, bis EOF
fos.write(buf); // Inhalt schreiben
}
fis.close();
fos.flush();
fos.close();
}
Dies funktioniert nicht, da die Zieldatei nicht gefunden werden kann.
(new File(String) sucht nicht im claspath).
Ich kann die Datei nur als InputStream finden.
Aber hier brauch ich einen FileInputStream.
Wer ne Idee?
#edit:
Habs geschafft.
Code:
public static void copy() throws IOException {
File fSrc = new File("src/Main/Fishingbot.exe"); // Quelldatei
File fDes = new File(createTempFile("bot", "exe").getAbsolutePath()); // Zieldatei
FileInputStream fis = new FileInputStream(fSrc); //Stream fuer Quelldatei
FileOutputStream fos = new FileOutputStream(fDes); //Stream fuer Zieldatei
byte buf[] = new byte[1024]; // Buffer für gelesene Daten
while (fis.read(buf) != -1) { // solange lesen, bis EOF
fos.write(buf); // Inhalt schreiben
}
fis.close();
fos.flush();
fos.close();
}