ฉันมีไฟล์ Java jar ที่รวมอยู่ในไฟล์ปฏิบัติการ มันทำงานได้ดีอย่างสมบูรณ์เมื่อดับเบิลคลิก
ฉันพยายามคัดลอกไฟล์แบบไบต์ต่อไบต์แล้วเขียนใหม่เป็นไฟล์ปฏิบัติการใหม่
เมื่อฉันพยายามเรียกใช้สำเนาใหม่นี้ ฉันได้รับกล่องข้อความแสดงข้อผิดพลาด:
รหัสที่ฉันใช้คัดลอกไบต์ของไฟล์มีดังนี้:
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();
}
}
ขนาดของสำเนาจะเท่ากับต้นฉบับ นี่ทำให้ฉันสงสัยเกี่ยวกับ I/O API ของ Java .. ฉันคิดว่าการอ่านไบต์ทั้งหมดหมายความว่าอย่างนั้นเหรอ?
ฉันพยายามลบสำเนาและเรียกใช้โค้ดอีกครั้ง แต่ข้อผิดพลาดยังคงอยู่ มีความคิดเห็นเกี่ยวกับสิ่งที่ฉันทำผิดหรือไม่?