ZipFile.java: Compute the offset of the ZipEntry data correctly.
* java/util/zip/ZipFile.java: Compute the offset of the ZipEntry data correctly. From-SVN: r30439
This commit is contained in:
parent
309ca067d4
commit
a21d059766
2 changed files with 12 additions and 4 deletions
|
@ -122,10 +122,13 @@ public class ZipFile implements ZipConstants
|
|||
public InputStream getInputStream(ZipEntry ze) throws IOException
|
||||
{
|
||||
byte[] buffer = new byte[(int) ze.getSize()];
|
||||
int data_offset = ZipConstants.LOCAL_FILE_HEADER_SIZE + name.length();
|
||||
if (ze.extra != null)
|
||||
data_offset += ze.extra.length;
|
||||
file.seek(ze.relativeOffset + data_offset);
|
||||
|
||||
/* Read the size of the extra field, and skip to the start of the
|
||||
data. */
|
||||
file.seek (ze.relativeOffset + ZipConstants.LOCAL_FILE_HEADER_SIZE - 2);
|
||||
int extraFieldLength = readu2();
|
||||
file.skipBytes (ze.getName().length() + extraFieldLength);
|
||||
|
||||
file.readFully(buffer);
|
||||
|
||||
InputStream is = new ByteArrayInputStream (buffer);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue