|
| Problemer med at læse en jar fil... Fra : Brian Matzon |
Dato : 20-04-01 08:58 |
|
Når jeg tager en JarEntry fra en JarOutputStream, returnerer den altid -1 i
dens størrelse?
Jeg har haft et lignende problem, hvis jeg åbner en jar fil med en
ZipInputStream, men det gør jeg ikke i dette tilfælde...
/Brian Matzon
--8<--8<--8<--8<--8<--8<
....
JarInputStream jarInputStream = new JarInputStream(new
BufferedInputStream(urlConnection.getInputStream()), true);
JarEntry jarEntry = null;
int bufferSize = 1024;
byte[] byteArray = new byte[bufferSize];
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
int readBytes;
while ((jarEntry = jarInputStream.getNextJarEntry()) != null) {
if (jarEntry.isDirectory()) {
continue;
}
//check for its size
int size = (int)jarEntry.getSize();
if(size == -1) {
System.err.println("Dropping " + jarEntry.getName() + ". Size
= -1");
continue;
}
....
| |
nnnn (20-04-2001)
| Kommentar Fra : nnnn |
Dato : 20-04-01 10:21 |
|
Brian Matzon wrote:
> Når jeg tager en JarEntry fra en JarOutputStream, returnerer den altid -1 i
> dens størrelse?
> Jeg har haft et lignende problem, hvis jeg åbner en jar fil med en
> ZipInputStream, men det gør jeg ikke i dette tilfælde...
Du kan ikke forvente at size er sat. Læs stream'en indtil end-of-stream.
Visse zip-programmer (bl.a. winzip) sætter størrelsen.
>
> /Brian Matzon
> --8<--8<--8<--8<--8<--8<
>
> ....
>
> JarInputStream jarInputStream = new JarInputStream(new
> BufferedInputStream(urlConnection.getInputStream()), true);
> JarEntry jarEntry = null;
>
> int bufferSize = 1024;
> byte[] byteArray = new byte[bufferSize];
>
> ByteArrayOutputStream bytes = new ByteArrayOutputStream();
> int readBytes;
>
> while ((jarEntry = jarInputStream.getNextJarEntry()) != null) {
> if (jarEntry.isDirectory()) {
> continue;
> }
>
> //check for its size
> int size = (int)jarEntry.getSize();
> if(size == -1) {
> System.err.println("Dropping " + jarEntry.getName() + ". Size
> = -1");
> continue;
> }
> ....
>
>
| |
Brian Matzon (20-04-2001)
| Kommentar Fra : Brian Matzon |
Dato : 20-04-01 11:56 |
|
> > Når jeg tager en JarEntry fra en JarOutputStream, returnerer den
altid -1 i
> > dens størrelse?
> > Jeg har haft et lignende problem, hvis jeg åbner en jar fil med en
> > ZipInputStream, men det gør jeg ikke i dette tilfælde...
>
>
> Du kan ikke forvente at size er sat. Læs stream'en indtil end-of-stream.
Ehm... Hvordan ved jeg så hvor meget jeg skal læse fra inputstreamen (der er
flere filer i Jar'en) ???
/Brian Matzon
| |
Brian Matzon (20-04-2001)
| Kommentar Fra : Brian Matzon |
Dato : 20-04-01 12:09 |
|
> Ehm... Hvordan ved jeg så hvor meget jeg skal læse fra inputstreamen (der
er
> flere filer i Jar'en) ???
My fault - man læser bare indtil man får end of stream, på den entry.
/Brian Matzon
| |
|
|