Для кодирования Base64 данных во время их записи в OutputStream
используйте метод Encoder.wrap(OutputStream os)
.
По умолчанию BufferedOutputStream
будет используйте 8192-байтовый буфер, поэтому если вы увеличите BUFFER_SIZE
до 8192, то вам не понадобятся BufferedOutputStream
.
. Вам следует использовать try-with-resources , и более новый API NIO.2.
Это означает, что ваш код должен быть:
private static final int BUFFER_SIZE = 8192;
private static void extractFile(ZipInputStream zipIn, ZipEntry entry) throws IOException {
try ( OutputStream fos = Files.newOutputStream(Paths.get("D:/Project", entry.getName()));
OutputStream b64os = Base64.getEncoder().wrap(fos); ) {
System.out.println("File Name " + entry.getName());
byte[] buf = new byte[BUFFER_SIZE];
for (int len = 0; (len = zipIn.read(buf)) != -1; ) {
b64os.write(buf, 0, len);
}
}
}