2016-04-27 3 views
0

Есть ли прямой способ распаковать java.util.zip.ZipEntry на File?ZipEntry to File

Я хочу указать местоположение (например, «C: \ temp \ myfile.java») и распаковать запись в это место.

В сети есть некоторый код с потоками, но я бы предпочел протестированную библиотечную функцию.

+1

* «... в« Файл »?» * ['Файл'] (http://docs.oracle.com/javase/8/docs/api/java/io/File.html) является абстрактным представлением пути. Вы имеете в виду «файл» (без разметки кода)? –

+0

Среднее значение, я даю функции Файл, и он распаковывает запись на этот абстрактный путь. –

+1

Прошу прощения, если это неясно или дублируется, но, пожалуйста, прокомментируйте, вместо того, чтобы проголосовать за это. –

ответ

7

Используйте ZipFile класс

ZipFile zf = new ZipFile("zipfile"); 

Получить запись

ZipEntry e = zf.getEntry("name"); 

Получить inpustream

InputStream is = zf.getInputStream(e); 

Сохранить байты

Files.copy(is, Paths.get("C:\\temp\\myfile.java")); 
2

Используйте ZipInputStream, чтобы перейти к нужному ZipEntry путем итерации с использованием метода getNextEntry(). Затем используйте метод ZipInputStream.read(...) для чтения байтов для текущего ZipEntry. Выведите эти байты в FileOutputStream, указывая на файл по вашему выбору.

+0

Это означает: Нет, нет библиотечной функции? –