У меня есть файл jar Java, завернутый в исполняемый файл. Он отлично работает при двойном щелчке.
Я попытался скопировать файл побайтно и перезаписать его в новый исполняемый файл.
Когда я пытаюсь запустить эту новую копию, я получаю сообщение об ошибке:
Код, который я использовал для копирования байтов файла, выглядит следующим образом:
import java.nio.file.*;
import java.io.*;
public class Exec {
public static void main(String args[])throws Exception {
byte[] data = Files.readAllBytes(Paths.get("C:\\Users\\Dziugas\\Desktop\\Darts.exe"));
File x = new File("C:\\Users\\Dziugas\\Desktop\\file.exe");
if(!x.exists())
x.createNewFile();
BufferedWriter writer = new BufferedWriter(new FileWriter(x, true));
for(byte b: data)
writer.write(b);
writer.close();
}
}
Размер копии такой же, как у оригинала. Это заставляет меня задуматься об API ввода-вывода Java. Я думал, что чтение всех байтов означает именно это?
Я попытался удалить копию и снова запустить код, но ошибка осталась. Любые идеи о том, что я делаю неправильно?