我有一個包裝在可執行文件中的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 ..我認爲讀取所有字節意味着什麼?
我試着刪除副本並再次運行代碼,但錯誤仍然存在。關於我在做什麼的任何想法都是錯誤的?
母鹿爲char適用於文件類的所有字節流或只是方法的轉換? – Dziugas 2015-02-11 07:49:33
@Dziugas它既不適用於字節流也不適用於'文件'。它是*你的代碼*,它用'byte'調用'Writer.write(char)'(隱式地將字節轉換爲char)。 – immibis 2015-02-11 08:14:02