с текстовым файлом проще, конечно.
а вот что с картинками и музыкой делать прямо не знаю. ((( как bytearray превратить в картинку типа png (с alpha) или jpg?
/* zipfilename - имя файла архива, filename - файл, который нужно найти в архиве *
* на выходе - массив байтов, содержащая извлеченный файл */
public static byte[] zipExtract(String zipfilename, String filename) {
// буфер для строки
byte[] buf = null;
try {
// поток архива
ZipInputStream zipinputstream = null;
// вхождения в архив
ZipEntry zipentry;
// создаем поток архива, параметр - свежесозданный поток файла архива
zipinputstream = new ZipInputStream(new FileInputStream(zipfilename));
// получаем очередное вхождение в архив
zipentry = zipinputstream.getNextEntry();
// пока все вхождения в архив не кончатся
while (zipentry != null) {
// получаем имя вхождения (запакованного файла или папки)
String entryName = zipentry.getName();
// если это искомый файл
if (entryName == filename) {
// получаем размер найденного файла
int entrysize = (int)zipentry.getSize();
// создаем буфер для чтения из архива
buf = new byte[entrysize];
// читаем найденный файл из архива в буфер
zipinputstream.read(buf, 0, entrysize);
// закрываем вхождение
zipinputstream.closeEntry();
// заканчиваем поиск
break;
}
// получаем очередное вхождение в архив
zipentry = zipinputstream.getNextEntry();
}
// закрываем поток архива
zipinputstream.close();
} catch (Exception e) {
e.printStackTrace();
}
// возвращаем буфер
return buf;
}
/* zipfilename - имя файла архива, filename - файл, который нужно найти в архиве *
* на выходе - строка, содержащая извлеченный файл */
public static String zipExtractTextfile(String zipfilename, String filename) {
return zipExtract(zipfilename, filename).toString();
}