【发布时间】:2015-02-11 07:34:14
【问题描述】:
我有一个包含在可执行文件中的 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();
}
}
副本的大小与原件相同。这让我对 Java 的 I/O API 感到好奇。我认为 read all bytes 就是这个意思?
我尝试删除副本并再次运行代码,但错误仍然存在。关于我做错了什么的任何想法?
【问题讨论】: