Объясните пожалуйста, как происходит добавление объекта ZipEntry
в архив с помощью метода putNextEntry()
класса ZipOutputStream
, так как я новичок не получается разобраться в этом методе.
сам метод класса ZipOutputStream:
public void putNextEntry(ZipEntry e) throws IOException {
ensureOpen();
if (current != null) {
closeEntry(); // close previous entry
}
if (e.xdostime == -1) {
// by default, do NOT use extended timestamps in extra
// data, for now.
e.setTime(System.currentTimeMillis());
}
if (e.method == -1) {
e.method = method; // use default method
}
// store size, compressed size, and crc-32 in LOC header
e.flag = 0;
switch (e.method) {
case DEFLATED:
// store size, compressed size, and crc-32 in data descriptor
// immediately following the compressed entry data
if (e.size == -1 || e.csize == -1 || e.crc == -1)
e.flag = 8;
break;
case STORED:
// compressed size, uncompressed size, and crc-32 must all be
// set for entries using STORED compression method
if (e.size == -1) {
e.size = e.csize;
} else if (e.csize == -1) {
e.csize = e.size;
} else if (e.size != e.csize) {
throw new ZipException(
"STORED entry where compressed != uncompressed size");
}
if (e.size == -1 || e.crc == -1) {
throw new ZipException(
"STORED entry missing size, compressed size, or crc-32");
}
break;
default:
throw new ZipException("unsupported compression method");
}
if (! names.add(e.name)) {
throw new ZipException("duplicate entry: " + e.name);
}
if (zc.isUTF8())
e.flag |= EFS;
current = new XEntry(e, written);
xentries.add(current);
writeLOC(current);
}
Надеюсь данный примет тебе поможет.
// Create the ZIP file
ZipOutputStream out = new ZipOutputStream(new FileOutputStream("my.zip"));
// loop through the files to add to zip
for (int i=0; i<filenames.length; i++)
{
// open file
FileInputStream in = new FileInputStream(filenames[i]);
// Add new entry to zip
out.putNextEntry(new ZipEntry(filenames[i]));
// copy file to zip
// see http://helpdesk.objects.com.au/java/how-do-i-copy-one-stream-to-another-using-java
int len;
while ((len = in.read(buf)) >= 0)
{
out.write(buf, 0, len);
}
// Close the entry and file
out.closeEntry();
in.close();
}
// Close the ZIP file
out.close();
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
ЗдравствуйтеПодскажите как в android реализовать выпадающий текст, как показано на изображении