gpt4 book ai didi

java - 重复文件的功能与原始文件不同

转载 作者:行者123 更新时间:2023-12-01 11:55:52 24 4
gpt4 key购买 nike

我有一个包含在可执行文件中的 Java jar 文件。双击时效果非常好。

我尝试逐字节复制文件并将其重写为新的可执行文件。

当我尝试运行这个新副本时,收到错误消息框:File not compatable

我用来复制文件字节的代码如下:

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,然后写入 char。使用 OutputStream 写入字节(使用 InputStream 读取字节)。使用WriterReader来写入和读取char

一般来说,如果您有一个字节数组,那么将其转换为字符并返回可能会完全破坏它。例如,您的示例可能(取决于平台)导致文件编码为 UTF-8。

关于java - 重复文件的功能与原始文件不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28448858/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com