Я хотел бы извлечь запись zip/jar в память, чтобы я мог закрыть zip-поток/FS и сохранить файл в JVM, не имея дело с временными копиями.
Один из вариантов — использовать Files.readAllLines(Path pathToZipFSentry), но, похоже, он использовал буферизованный ридер, который может сильно наказывать большие файлы.
Итак, я изучаю, как это сделать в Java NIO2, и кажется, что путь заканчивается MappedByteBuffer через FileChannels.
Я не могу использовать RandomAccessFile.getChannel(), поскольку я исхожу из пути виртуальной файловой системы, а не из буквального файла. Я не могу использовать Files.newByteChannel(rscPath, StandardOpenOption.READ), а затем (fileChannel.)map(), потому что он возвращает SeekableByteChannel, у которого нет карты в интерфейсе...
Есть ли для этого один/два высокоуровневых вкладыша с помощью Path(s)/File(s)/FileSystem(s)/FileChannel(s) в Java8? Я бы ожидал что-то вроде InMemoryFile file = Files.loadIntoMem(Path) Я 1 час искал вариант закрытия...
FileChannel.open()
? Но в любом случае это не решит проблему, что вы не можете напрямую mmap() из записи zip в любом случае; где-то будет временная копия - person fge   schedule 15.02.2015