... but I should actually use a ByteArrayOutputStream to avoid breaking up unicode characters that might span the 65536-byte boundary of my input buffer:
private boolean readEpubFile() { FileInputStream f = null; ZipInputStream z = null; byte buffer[] = new byte[65536]; try { f = new FileInputStream(this.file); z = new ZipInputStream(f); ZipEntry ze; while ((ze = z.getNextEntry()) != null) { ByteArrayOutputStream bs = new ByteArrayOutputStream(); int len = 0; while ((len = z.read(buffer)) > 0) { bs.write(buffer, 0, len); } byte[] bytes = bs.toByteArray(); if (this.itemMap == null) { this.itemMap = new LinkedHashMap<String, String>(); } String name = ze.getName(); String content = new String(bytes); this.itemMap.put(name, content); } } catch (Throwable t) { return (false); } return (true); } -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en