Java 复制后的文件更大

Java 复制后的文件更大,java,Java,我正在尝试使用一个API上传一个jar文件,该API将InputStream对象作为其源。测试时,我注意到上传的文件比原始文件大,下载后无法打开 我试图将资源复制到一个文件并打开它,但行为相同: InputStream original = getClass().getResourceAsStream("/Example.jar"); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byt

我正在尝试使用一个API上传一个jar文件,该API将
InputStream
对象作为其源。测试时,我注意到上传的文件比原始文件大,下载后无法打开

我试图将资源复制到一个文件并打开它,但行为相同:

InputStream original = getClass().getResourceAsStream("/Example.jar");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
for (int read; (read = original.read(buffer)) != -1; ) {
  baos.write(buffer, 0, read);
}
original.close();
FileOutputStream fos = new FileOutputStream("target/copy.jar");
fos.write(baos.toByteArray());
fos.close();
复制过程出了什么问题


更新:我尝试使用
文件输入流
读取jar文件,这使得复制的jar完全相同。但是,我仍然不知道为什么
getResourceAsStream(“/Example.jar”)
使用
getResourceAsStream
返回一个更大的
InputStream

通常不适合读取jar文件,因为在大多数正常使用情况下,
getResourceAsStream
只会读取jar文件中的内容。在这种情况下,它可能会起作用,因为您是从IDE或文件夹中的松散
-文件执行此操作的。然而,这本身并不能解释你的问题。