Объясните пожалуйста эту магию с вычитыванием в буфер, который нигде не применяется. Как jvm узнает, что можно посмотреть информацию по файлу из потока байтАрэй? Почему если не считать в в этот поток, то в считанных параметрах будет -1. В комментариях к задаче данной информации не нашел, так же как и в соседних вопросах. Неужели это действительно какая-то высокоуровневая затычка, логика которой видна только в самом низкоуровневом коде jvm?
public List<FileProperties> getFilesList() throws Exception {
if (!Files.isRegularFile(zipFile)) throw new WrongZipFileException();
List<FileProperties> list = new ArrayList<>();
try (ZipInputStream zipInputStream = new ZipInputStream(Files.newInputStream(zipFile))) {
ZipEntry entry;
while ((entry = zipInputStream.getNextEntry()) != null) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
copyData(zipInputStream, baos);
list.add(new FileProperties(entry.getName(), entry.getSize(),
entry.getCompressedSize(), entry.getMethod()));
}
}
return list;
}