Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
47a4bc28
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
47a4bc28
编写于
2月 25, 2011
作者:
S
smarks
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
7021582: convert jar/zip code and tests to use try-with-resources
Reviewed-by: alanb, dholmes, sherman
上级
ad5d7da0
变更
26
隐藏空白更改
内联
并排
Showing
26 changed file
with
487 addition
and
521 deletion
+487
-521
src/share/classes/java/util/jar/JarFile.java
src/share/classes/java/util/jar/JarFile.java
+7
-7
test/java/util/jar/JarEntry/GetMethodsReturnClones.java
test/java/util/jar/JarEntry/GetMethodsReturnClones.java
+13
-14
test/java/util/jar/JarFile/ScanSignedJar.java
test/java/util/jar/JarFile/ScanSignedJar.java
+15
-15
test/java/util/zip/Available.java
test/java/util/zip/Available.java
+22
-18
test/java/util/zip/FileBuilder.java
test/java/util/zip/FileBuilder.java
+17
-18
test/java/util/zip/GZIP/Accordion.java
test/java/util/zip/GZIP/Accordion.java
+2
-6
test/java/util/zip/GZIP/GZIPInputStreamRead.java
test/java/util/zip/GZIP/GZIPInputStreamRead.java
+22
-22
test/java/util/zip/InflateIn_DeflateOut.java
test/java/util/zip/InflateIn_DeflateOut.java
+3
-3
test/java/util/zip/InfoZip.java
test/java/util/zip/InfoZip.java
+20
-24
test/java/util/zip/LargeZip.java
test/java/util/zip/LargeZip.java
+39
-35
test/java/util/zip/TestEmptyZip.java
test/java/util/zip/TestEmptyZip.java
+10
-28
test/java/util/zip/ZipCoding.java
test/java/util/zip/ZipCoding.java
+40
-41
test/java/util/zip/ZipFile/Assortment.java
test/java/util/zip/ZipFile/Assortment.java
+6
-7
test/java/util/zip/ZipFile/Comment.java
test/java/util/zip/ZipFile/Comment.java
+25
-26
test/java/util/zip/ZipFile/CopyJar.java
test/java/util/zip/ZipFile/CopyJar.java
+12
-12
test/java/util/zip/ZipFile/CorruptedZipFiles.java
test/java/util/zip/ZipFile/CorruptedZipFiles.java
+11
-17
test/java/util/zip/ZipFile/DeleteTempJar.java
test/java/util/zip/ZipFile/DeleteTempJar.java
+20
-20
test/java/util/zip/ZipFile/EnumAfterClose.java
test/java/util/zip/ZipFile/EnumAfterClose.java
+6
-4
test/java/util/zip/ZipFile/GetDirEntry.java
test/java/util/zip/ZipFile/GetDirEntry.java
+6
-6
test/java/util/zip/ZipFile/LargeZipFile.java
test/java/util/zip/ZipFile/LargeZipFile.java
+38
-39
test/java/util/zip/ZipFile/ManyEntries.java
test/java/util/zip/ZipFile/ManyEntries.java
+6
-13
test/java/util/zip/ZipFile/ManyZipFiles.java
test/java/util/zip/ZipFile/ManyZipFiles.java
+15
-14
test/java/util/zip/ZipFile/ReadAfterClose.java
test/java/util/zip/ZipFile/ReadAfterClose.java
+7
-4
test/java/util/zip/ZipFile/ReadZip.java
test/java/util/zip/ZipFile/ReadZip.java
+41
-46
test/java/util/zip/ZipFile/ShortRead.java
test/java/util/zip/ZipFile/ShortRead.java
+22
-20
test/java/util/zip/zip.java
test/java/util/zip/zip.java
+62
-62
未找到文件。
src/share/classes/java/util/jar/JarFile.java
浏览文件 @
47a4bc28
...
...
@@ -376,9 +376,9 @@ class JarFile extends ZipFile {
*/
private
byte
[]
getBytes
(
ZipEntry
ze
)
throws
IOException
{
byte
[]
b
=
new
byte
[(
int
)
ze
.
getSize
()];
DataInputStream
is
=
new
DataInputStream
(
super
.
getInputStream
(
ze
));
is
.
readFully
(
b
,
0
,
b
.
length
);
is
.
close
();
try
(
DataInputStream
is
=
new
DataInputStream
(
super
.
getInputStream
(
ze
)))
{
is
.
readFully
(
b
,
0
,
b
.
length
);
}
return
b
;
}
...
...
@@ -480,10 +480,10 @@ class JarFile extends ZipFile {
JarEntry
manEntry
=
getManEntry
();
if
(
manEntry
!=
null
)
{
byte
[]
b
=
new
byte
[(
int
)
manEntry
.
getSize
()];
DataInputStream
dis
=
new
DataInputStream
(
super
.
getInputStream
(
manEntry
));
dis
.
readFully
(
b
,
0
,
b
.
length
);
dis
.
close
();
try
(
DataInputStream
dis
=
new
DataInputStream
(
super
.
getInputStream
(
manEntry
)))
{
dis
.
readFully
(
b
,
0
,
b
.
length
);
}
int
last
=
b
.
length
-
src
.
length
;
int
i
=
0
;
...
...
test/java/util/jar/JarEntry/GetMethodsReturnClones.java
浏览文件 @
47a4bc28
...
...
@@ -40,22 +40,21 @@ public class GetMethodsReturnClones {
System
.
getProperty
(
"file.separator"
);
public
static
void
main
(
String
[]
args
)
throws
Exception
{
JarFile
jf
=
new
JarFile
(
BASE
+
"test.jar"
,
true
);
byte
[]
buffer
=
new
byte
[
8192
];
Enumeration
<
JarEntry
>
e
=
jf
.
entries
();
List
<
JarEntry
>
entries
=
new
ArrayList
<
JarEntry
>();
while
(
e
.
hasMoreElements
())
{
JarEntry
je
=
e
.
nextElement
();
entries
.
add
(
je
);
InputStream
is
=
jf
.
getInputStream
(
je
);
while
(
is
.
read
(
buffer
,
0
,
buffer
.
length
)
!=
-
1
)
{
// we just read. this will throw a SecurityException
// if a signature/digest check fails.
List
<
JarEntry
>
entries
=
new
ArrayList
<>();
try
(
JarFile
jf
=
new
JarFile
(
BASE
+
"test.jar"
,
true
))
{
byte
[]
buffer
=
new
byte
[
8192
];
Enumeration
<
JarEntry
>
e
=
jf
.
entries
();
while
(
e
.
hasMoreElements
())
{
JarEntry
je
=
e
.
nextElement
();
entries
.
add
(
je
);
try
(
InputStream
is
=
jf
.
getInputStream
(
je
))
{
while
(
is
.
read
(
buffer
,
0
,
buffer
.
length
)
!=
-
1
)
{
// we just read. this will throw a SecurityException
// if a signature/digest check fails.
}
}
}
is
.
close
();
}
jf
.
close
();
for
(
JarEntry
je
:
entries
)
{
Certificate
[]
certs
=
je
.
getCertificates
();
...
...
test/java/util/jar/JarFile/ScanSignedJar.java
浏览文件 @
47a4bc28
...
...
@@ -37,25 +37,25 @@ import java.util.jar.*;
public
class
ScanSignedJar
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
JarFile
file
=
new
JarFile
(
new
File
(
System
.
getProperty
(
"test.src"
,
"."
),
"bogus-signerinfo-attr.jar"
));
byte
[]
buffer
=
new
byte
[
8192
];
boolean
isSigned
=
false
;
try
(
JarFile
file
=
new
JarFile
(
new
File
(
System
.
getProperty
(
"test.src"
,
"."
),
"bogus-signerinfo-attr.jar"
)))
{
byte
[]
buffer
=
new
byte
[
8192
];
for
(
Enumeration
entries
=
file
.
entries
();
entries
.
hasMoreElements
();)
{
JarEntry
entry
=
(
JarEntry
)
entries
.
nextElement
();
InputStream
jis
=
file
.
getInputStream
(
entry
);
while
(
jis
.
read
(
buffer
,
0
,
buffer
.
length
)
!=
-
1
)
{
// read the jar entry
for
(
Enumeration
entries
=
file
.
entries
();
entries
.
hasMoreElements
();)
{
JarEntry
entry
=
(
JarEntry
)
entries
.
nextElement
();
try
(
InputStream
jis
=
file
.
getInputStream
(
entry
))
{
while
(
jis
.
read
(
buffer
,
0
,
buffer
.
length
)
!=
-
1
)
{
// read the jar entry
}
}
if
(
entry
.
getCertificates
()
!=
null
)
{
isSigned
=
true
;
}
System
.
out
.
println
((
isSigned
?
"[signed] "
:
"\t "
)
+
entry
.
getName
());
}
jis
.
close
();
if
(
entry
.
getCertificates
()
!=
null
)
{
isSigned
=
true
;
}
System
.
out
.
println
((
isSigned
?
"[signed] "
:
"\t "
)
+
entry
.
getName
());
}
file
.
close
();
if
(
isSigned
)
{
System
.
out
.
println
(
"\nJAR file has signed entries"
);
...
...
test/java/util/zip/Available.java
浏览文件 @
47a4bc28
...
...
@@ -44,14 +44,17 @@ public class Available {
File
f
=
new
File
(
System
.
getProperty
(
"test.src"
,
"."
),
"input.jar"
);
// test ZipInputStream
ZipInputStream
z
=
new
ZipInputStream
(
new
FileInputStream
(
f
));
z
.
getNextEntry
();
tryAvail
(
z
);
try
(
FileInputStream
fis
=
new
FileInputStream
(
f
);
ZipInputStream
z
=
new
ZipInputStream
(
fis
))
{
z
.
getNextEntry
();
tryAvail
(
z
);
}
// test InflaterInputStream
ZipFile
zfile
=
new
ZipFile
(
f
);
tryAvail
(
zfile
.
getInputStream
(
zfile
.
getEntry
(
"Available.java"
)));
z
.
close
();
try
(
ZipFile
zfile
=
new
ZipFile
(
f
))
{
tryAvail
(
zfile
.
getInputStream
(
zfile
.
getEntry
(
"Available.java"
)));
}
}
static
void
tryAvail
(
InputStream
in
)
throws
Exception
{
...
...
@@ -67,20 +70,21 @@ public class Available {
// To reproduce 4401122
private
static
void
test2
()
throws
Exception
{
File
f
=
new
File
(
System
.
getProperty
(
"test.src"
,
"."
),
"input.jar"
);
ZipFile
zf
=
new
ZipFile
(
f
);
InputStream
in
=
zf
.
getInputStream
(
zf
.
getEntry
(
"Available.java"
));
try
(
ZipFile
zf
=
new
ZipFile
(
f
))
{
InputStream
in
=
zf
.
getInputStream
(
zf
.
getEntry
(
"Available.java"
));
int
initialAvailable
=
in
.
available
();
in
.
read
();
if
(
in
.
available
()
!=
initialAvailable
-
1
)
throw
new
RuntimeException
(
"Available not decremented."
);
for
(
int
j
=
0
;
j
<
initialAvailable
-
1
;
j
++)
int
initialAvailable
=
in
.
available
();
in
.
read
();
if
(
in
.
available
()
!=
0
)
throw
new
RuntimeException
();
in
.
close
();
if
(
in
.
available
()
!=
0
)
throw
new
RuntimeException
();
if
(
in
.
available
()
!=
initialAvailable
-
1
)
throw
new
RuntimeException
(
"Available not decremented."
);
for
(
int
j
=
0
;
j
<
initialAvailable
-
1
;
j
++)
in
.
read
();
if
(
in
.
available
()
!=
0
)
throw
new
RuntimeException
();
in
.
close
();
if
(
in
.
available
()
!=
0
)
throw
new
RuntimeException
();
}
}
}
test/java/util/zip/FileBuilder.java
浏览文件 @
47a4bc28
...
...
@@ -53,25 +53,24 @@ public class FileBuilder {
filetype
.
equals
(
"SlightlyCompressible"
)))
usageError
();
RandomAccessFile
raf
=
new
RandomAccessFile
(
filename
,
"rw"
);
if
(
filetype
.
equals
(
"SlightlyCompressible"
))
{
byte
[]
randomBytes
=
new
byte
[
16384
];
byte
[]
nullBytes
=
new
byte
[
randomBytes
.
length
/
10
]
;
Random
rand
=
new
Random
();
for
(
int
i
=
0
;
raf
.
length
()
<
filesize
;
++
i
)
{
rand
.
nextBytes
(
random
Bytes
);
raf
.
write
(
null
Bytes
);
raf
.
write
(
randomBytes
);
try
(
RandomAccessFile
raf
=
new
RandomAccessFile
(
filename
,
"rw"
))
{
if
(
filetype
.
equals
(
"SlightlyCompressible"
))
{
byte
[]
randomBytes
=
new
byte
[
16384
];
byte
[]
nullBytes
=
new
byte
[
randomBytes
.
length
/
10
];
Random
rand
=
new
Random
()
;
for
(
int
i
=
0
;
raf
.
length
()
<
filesize
;
++
i
)
{
rand
.
nextBytes
(
randomBytes
);
raf
.
write
(
null
Bytes
);
raf
.
write
(
random
Bytes
);
}
}
}
// Make sure file is exactly the requested size, and that
// a unique identifying trailer is written.
byte
[]
filenameBytes
=
filename
.
getBytes
(
"UTF8"
);
raf
.
seek
(
filesize
-
filenameBytes
.
length
);
raf
.
write
(
filenameBytes
);
raf
.
setLength
(
filesize
);
raf
.
close
();
// Make sure file is exactly the requested size, and that
// a unique identifying trailer is written.
byte
[]
filenameBytes
=
filename
.
getBytes
(
"UTF8"
);
raf
.
seek
(
filesize
-
filenameBytes
.
length
);
raf
.
write
(
filenameBytes
);
raf
.
setLength
(
filesize
);
}
}
}
test/java/util/zip/GZIP/Accordion.java
浏览文件 @
47a4bc28
...
...
@@ -64,16 +64,13 @@ public class Accordion {
System
.
out
.
println
(
"count="
+
count
);
Thread
compressor
=
new
Thread
()
{
public
void
run
()
{
try
{
final
GZIPOutputStream
s
=
new
GZIPOutputStream
(
out
);
try
(
GZIPOutputStream
s
=
new
GZIPOutputStream
(
out
))
{
for
(
long
i
=
0
;
i
<
count
;
i
++)
s
.
write
(
data
,
0
,
data
.
length
);
s
.
close
();
}
catch
(
Throwable
t
)
{
trouble
=
t
;
}}};
Thread
uncompressor
=
new
Thread
()
{
public
void
run
()
{
try
{
final
GZIPInputStream
s
=
new
GZIPInputStream
(
in
);
try
(
GZIPInputStream
s
=
new
GZIPInputStream
(
in
))
{
final
byte
[]
maybeBytes
=
new
byte
[
data
.
length
];
for
(
long
i
=
0
;
i
<
count
;
i
++)
{
readFully
(
s
,
maybeBytes
);
...
...
@@ -82,7 +79,6 @@ public class Accordion {
}
if
(
s
.
read
(
maybeBytes
,
0
,
1
)
>
0
)
throw
new
Exception
(
"Unexpected NON-EOF"
);
s
.
close
();
}
catch
(
Throwable
t
)
{
trouble
=
t
;
}}};
compressor
.
start
();
uncompressor
.
start
();
...
...
test/java/util/zip/GZIP/GZIPInputStreamRead.java
浏览文件 @
47a4bc28
...
...
@@ -44,9 +44,9 @@ public class GZIPInputStreamRead {
rnd
.
nextBytes
(
src
);
srcBAOS
.
write
(
src
);
GZIPOutputStream
gzos
=
new
GZIPOutputStream
(
dstBAOS
);
gzos
.
write
(
src
);
gzos
.
close
();
try
(
GZIPOutputStream
gzos
=
new
GZIPOutputStream
(
dstBAOS
))
{
gzos
.
write
(
src
);
}
}
byte
[]
srcBytes
=
srcBAOS
.
toByteArray
();
byte
[]
dstBytes
=
dstBAOS
.
toByteArray
();
...
...
@@ -75,26 +75,26 @@ public class GZIPInputStreamRead {
int
readBufSize
,
int
gzisBufSize
)
throws
Throwable
{
GZIPInputStream
gzis
=
new
GZIPInputStream
(
new
ByteArrayInputStream
(
dst
),
gzisBufSize
);
byte
[]
result
=
new
byte
[
src
.
length
+
10
];
byte
[]
buf
=
new
byte
[
readBufSize
];
int
n
=
0
;
int
off
=
0
;
try
(
ByteArrayInputStream
bais
=
new
ByteArrayInputStream
(
dst
);
GZIPInputStream
gzis
=
new
GZIPInputStream
(
bais
,
gzisBufSize
))
{
byte
[]
result
=
new
byte
[
src
.
length
+
10
];
byte
[]
buf
=
new
byte
[
readBufSize
];
int
n
=
0
;
int
off
=
0
;
while
((
n
=
gzis
.
read
(
buf
,
0
,
buf
.
length
))
!=
-
1
)
{
System
.
arraycopy
(
buf
,
0
,
result
,
off
,
n
);
off
+=
n
;
// no range check, if overflow, let it fail
}
if
(
off
!=
src
.
length
||
gzis
.
available
()
!=
0
||
!
Arrays
.
equals
(
src
,
Arrays
.
copyOf
(
result
,
off
)))
{
throw
new
RuntimeException
(
"GZIPInputStream reading failed! "
+
", src.len="
+
src
.
length
+
", read="
+
off
);
while
((
n
=
gzis
.
read
(
buf
,
0
,
buf
.
length
))
!=
-
1
)
{
System
.
arraycopy
(
buf
,
0
,
result
,
off
,
n
);
off
+=
n
;
// no range check, if overflow, let it fail
}
if
(
off
!=
src
.
length
||
gzis
.
available
()
!=
0
||
!
Arrays
.
equals
(
src
,
Arrays
.
copyOf
(
result
,
off
)))
{
throw
new
RuntimeException
(
"GZIPInputStream reading failed! "
+
", src.len="
+
src
.
length
+
", read="
+
off
);
}
}
gzis
.
close
();
}
}
test/java/util/zip/InflateIn_DeflateOut.java
浏览文件 @
47a4bc28
...
...
@@ -134,14 +134,14 @@ public class InflateIn_DeflateOut {
PairedOutputStream
pos
=
new
PairedOutputStream
(
pis
);
pis
.
setPairedOutputStream
(
pos
);
DeflaterOutputStream
dos
=
new
DeflaterOutputStream
(
pos
,
true
);
byte
[]
data
=
new
byte
[
random
.
nextInt
(
1024
*
1024
)];
byte
[]
buf
=
new
byte
[
data
.
length
];
random
.
nextBytes
(
data
);
dos
.
write
(
data
);
dos
.
close
();
try
(
DeflaterOutputStream
dos
=
new
DeflaterOutputStream
(
pos
,
true
))
{
dos
.
write
(
data
);
}
check
(
readFully
(
iis
,
buf
,
buf
.
length
));
check
(
Arrays
.
equals
(
data
,
buf
));
}
...
...
test/java/util/zip/InfoZip.java
浏览文件 @
47a4bc28
...
...
@@ -85,41 +85,37 @@ public class InfoZip {
//----------------------------------------------------------------
File
f
=
new
File
(
"InfoZip.zip"
);
OutputStream
os
=
new
FileOutputStream
(
f
);
os
.
write
(
new
byte
[]
{
'P'
,
'K'
,
3
,
4
,
10
,
0
,
0
,
0
,
0
,
0
,
-
68
,
8
,
'k'
,
'2'
,
'V'
,
-
7
,
'm'
,
9
,
20
,
0
,
0
,
0
,
20
,
0
,
0
,
0
,
8
,
0
,
21
,
0
,
's'
,
'o'
,
'm'
,
'e'
,
'F'
,
'i'
,
'l'
,
'e'
,
'U'
,
'T'
,
9
,
0
,
3
,
't'
,
'_'
,
'1'
,
'B'
,
't'
,
'_'
,
'1'
,
'B'
,
'U'
,
'x'
,
4
,
0
,
-
14
,
'v'
,
26
,
4
,
'M'
,
'e'
,
's'
,
's'
,
'a'
,
'g'
,
'e'
,
' '
,
'i'
,
'n'
,
' '
,
'a'
,
' '
,
'B'
,
'o'
,
't'
,
't'
,
'l'
,
'e'
,
10
,
'P'
,
'K'
,
1
,
2
,
23
,
3
,
10
,
0
,
0
,
0
,
0
,
0
,
-
68
,
8
,
'k'
,
'2'
,
'V'
,
-
7
,
'm'
,
9
,
20
,
0
,
0
,
0
,
20
,
0
,
0
,
0
,
8
,
0
,
13
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
-
92
,
-
127
,
0
,
0
,
0
,
0
,
's'
,
'o'
,
'm'
,
'e'
,
'F'
,
'i'
,
'l'
,
'e'
,
'U'
,
'T'
,
5
,
0
,
3
,
't'
,
'_'
,
'1'
,
'B'
,
'U'
,
'x'
,
0
,
0
,
'P'
,
'K'
,
5
,
6
,
0
,
0
,
0
,
0
,
1
,
0
,
1
,
0
,
'C'
,
0
,
0
,
0
,
'O'
,
0
,
0
,
0
,
0
,
0
,
});
os
.
close
();
try
(
OutputStream
os
=
new
FileOutputStream
(
f
))
{
os
.
write
(
new
byte
[]
{
'P'
,
'K'
,
3
,
4
,
10
,
0
,
0
,
0
,
0
,
0
,
-
68
,
8
,
'k'
,
'2'
,
'V'
,
-
7
,
'm'
,
9
,
20
,
0
,
0
,
0
,
20
,
0
,
0
,
0
,
8
,
0
,
21
,
0
,
's'
,
'o'
,
'm'
,
'e'
,
'F'
,
'i'
,
'l'
,
'e'
,
'U'
,
'T'
,
9
,
0
,
3
,
't'
,
'_'
,
'1'
,
'B'
,
't'
,
'_'
,
'1'
,
'B'
,
'U'
,
'x'
,
4
,
0
,
-
14
,
'v'
,
26
,
4
,
'M'
,
'e'
,
's'
,
's'
,
'a'
,
'g'
,
'e'
,
' '
,
'i'
,
'n'
,
' '
,
'a'
,
' '
,
'B'
,
'o'
,
't'
,
't'
,
'l'
,
'e'
,
10
,
'P'
,
'K'
,
1
,
2
,
23
,
3
,
10
,
0
,
0
,
0
,
0
,
0
,
-
68
,
8
,
'k'
,
'2'
,
'V'
,
-
7
,
'm'
,
9
,
20
,
0
,
0
,
0
,
20
,
0
,
0
,
0
,
8
,
0
,
13
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
-
92
,
-
127
,
0
,
0
,
0
,
0
,
's'
,
'o'
,
'm'
,
'e'
,
'F'
,
'i'
,
'l'
,
'e'
,
'U'
,
'T'
,
5
,
0
,
3
,
't'
,
'_'
,
'1'
,
'B'
,
'U'
,
'x'
,
0
,
0
,
'P'
,
'K'
,
5
,
6
,
0
,
0
,
0
,
0
,
1
,
0
,
1
,
0
,
'C'
,
0
,
0
,
0
,
'O'
,
0
,
0
,
0
,
0
,
0
,
});
}
ZipFile
zf
=
new
ZipFile
(
f
);
ZipEntry
ze
=
null
;
try
{
try
(
ZipFile
zf
=
new
ZipFile
(
f
))
{
Enumeration
<?
extends
ZipEntry
>
entries
=
zf
.
entries
();
ze
=
entries
.
nextElement
();
check
(!
entries
.
hasMoreElements
());
checkZipEntry
(
ze
,
contents
(
zf
,
ze
));
}
finally
{
zf
.
close
();
}
ZipInputStream
is
=
new
ZipInputStream
(
new
FileInputStream
(
f
));
try
{
try
(
FileInputStream
fis
=
new
FileInputStream
(
f
);
ZipInputStream
is
=
new
ZipInputStream
(
fis
))
{
ze
=
is
.
getNextEntry
();
checkZipEntry
(
ze
,
contents
(
is
));
check
(
is
.
getNextEntry
()
==
null
);
}
finally
{
is
.
close
();
}
f
.
delete
();
System
.
out
.
printf
(
"passed = %d, failed = %d%n"
,
passed
,
failed
);
...
...
test/java/util/zip/LargeZip.java
浏览文件 @
47a4bc28
...
...
@@ -98,19 +98,21 @@ public class LargeZip {
}
data
=
baos
.
toByteArray
();
ZipOutputStream
zos
=
new
ZipOutputStream
(
new
BufferedOutputStream
(
new
FileOutputStream
(
largeFile
)));
long
length
=
0
;
while
(
length
<
fileSize
)
{
ZipEntry
ze
=
new
ZipEntry
(
"entry-"
+
length
);
lastEntryName
=
ze
.
getName
();
zos
.
putNextEntry
(
ze
);
zos
.
write
(
data
,
0
,
data
.
length
);
zos
.
closeEntry
();
length
=
largeFile
.
length
();
try
(
FileOutputStream
fos
=
new
FileOutputStream
(
largeFile
);
BufferedOutputStream
bos
=
new
BufferedOutputStream
(
fos
);
ZipOutputStream
zos
=
new
ZipOutputStream
(
bos
))
{
long
length
=
0
;
while
(
length
<
fileSize
)
{
ZipEntry
ze
=
new
ZipEntry
(
"entry-"
+
length
);
lastEntryName
=
ze
.
getName
();
zos
.
putNextEntry
(
ze
);
zos
.
write
(
data
,
0
,
data
.
length
);
zos
.
closeEntry
();
length
=
largeFile
.
length
();
}
System
.
out
.
println
(
"Last entry written is "
+
lastEntryName
);
}
System
.
out
.
println
(
"Last entry written is "
+
lastEntryName
);
zos
.
close
();
}
static
void
readLargeZip1
()
throws
Throwable
{
...
...
@@ -143,33 +145,35 @@ public class LargeZip {
static
void
readLargeZip2
()
throws
Throwable
{
ZipInputStream
zis
=
new
ZipInputStream
(
new
BufferedInputStream
(
new
FileInputStream
(
largeFile
)));
ZipEntry
entry
=
null
;
String
entryName
=
null
;
int
count
=
0
;
while
((
entry
=
zis
.
getNextEntry
())
!=
null
)
{
entryName
=
entry
.
getName
();
if
(
entryName
.
equals
(
lastEntryName
))
{
break
;
try
(
FileInputStream
fis
=
new
FileInputStream
(
largeFile
);
BufferedInputStream
bis
=
new
BufferedInputStream
(
fis
);
ZipInputStream
zis
=
new
ZipInputStream
(
bis
))
{
ZipEntry
entry
=
null
;
String
entryName
=
null
;
int
count
=
0
;
while
((
entry
=
zis
.
getNextEntry
())
!=
null
)
{
entryName
=
entry
.
getName
();
if
(
entryName
.
equals
(
lastEntryName
))
{
break
;
}
count
++;
}
count
++;
}
System
.
out
.
println
(
"Number of entries read: "
+
count
);
System
.
out
.
println
(
"Last entry read is "
+
entryName
);
check
(!
entry
.
isDirectory
());
System
.
out
.
println
(
"Number of entries read: "
+
count
);
System
.
out
.
println
(
"Last entry read is "
+
entryName
);
check
(!
entry
.
isDirectory
());
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
byte
buf
[]
=
new
byte
[
4096
];
int
len
;
while
((
len
=
zis
.
read
(
buf
))
>=
0
)
{
baos
.
write
(
buf
,
0
,
len
);
byte
buf
[]
=
new
byte
[
4096
];
int
len
;
while
((
len
=
zis
.
read
(
buf
))
>=
0
)
{
baos
.
write
(
buf
,
0
,
len
);
}
baos
.
close
();
check
(
Arrays
.
equals
(
data
,
baos
.
toByteArray
()));
check
(
zis
.
getNextEntry
()
==
null
);
}
baos
.
close
();
check
(
Arrays
.
equals
(
data
,
baos
.
toByteArray
()));
check
(
zis
.
getNextEntry
()
==
null
);
zis
.
close
();
}
...
...
test/java/util/zip/TestEmptyZip.java
浏览文件 @
47a4bc28
...
...
@@ -78,67 +78,49 @@ public class TestEmptyZip {
pass
();
}
}
ZipInputStream
zis
=
null
;
try
{
zis
=
new
ZipInputStream
(
new
FileInputStream
(
f
));
try
(
FileInputStream
fis
=
new
FileInputStream
(
f
)
;
ZipInputStream
zis
=
new
ZipInputStream
(
fis
))
{
ZipEntry
ze
=
zis
.
getNextEntry
();
check
(
ze
==
null
);
}
catch
(
IOException
ex
)
{
unexpected
(
ex
);
}
finally
{
if
(
zis
!=
null
)
zis
.
close
();
}
}
static
void
write
(
File
f
)
throws
Exception
{
ZipOutputStream
zos
=
null
;
try
{
zos
=
new
ZipOutputStream
(
new
FileOutputStream
(
f
));
try
(
FileOutputStream
fis
=
new
FileOutputStream
(
f
)
;
ZipOutputStream
zos
=
new
ZipOutputStream
(
fis
))
{
zos
.
finish
();
zos
.
close
();
pass
();
}
catch
(
Exception
ex
)
{
unexpected
(
ex
);
}
finally
{
if
(
zos
!=
null
)
{
zos
.
close
();
}
}
}
static
void
readFile
(
File
f
)
throws
Exception
{
ZipFile
zf
=
null
;
try
{
zf
=
new
ZipFile
(
f
);
try
(
ZipFile
zf
=
new
ZipFile
(
f
))
{
Enumeration
e
=
zf
.
entries
();
while
(
e
.
hasMoreElements
())
{
ZipEntry
entry
=
(
ZipEntry
)
e
.
nextElement
();
fail
();
}
zf
.
close
();
pass
();
}
catch
(
Exception
ex
)
{
unexpected
(
ex
);
}
finally
{
if
(
zf
!=
null
)
{
zf
.
close
();
}
}
}
static
void
readStream
(
File
f
)
throws
Exception
{
ZipInputStream
zis
=
null
;
try
{
zis
=
new
ZipInputStream
(
new
FileInputStream
(
f
));
try
(
FileInputStream
fis
=
new
FileInputStream
(
f
)
;
ZipInputStream
zis
=
new
ZipInputStream
(
fis
))
{
ZipEntry
ze
=
zis
.
getNextEntry
();
check
(
ze
==
null
);
byte
[]
buf
=
new
byte
[
1024
];
check
(
zis
.
read
(
buf
,
0
,
1024
)
==
-
1
);
}
finally
{
if
(
zis
!=
null
)
{
zis
.
close
();
}
}
}
...
...
test/java/util/zip/ZipCoding.java
浏览文件 @
47a4bc28
...
...
@@ -57,59 +57,58 @@ public class ZipCoding {
String
name
,
String
comment
,
byte
[]
bb
)
throws
Exception
{
ZipInputStream
zis
=
new
ZipInputStream
(
is
,
cs
);
ZipEntry
e
=
zis
.
getNextEntry
();
if
(
e
==
null
||
!
name
.
equals
(
e
.
getName
()))
throw
new
RuntimeException
(
"ZipIS name doesn't match!"
);
byte
[]
bBuf
=
new
byte
[
bb
.
length
<<
1
];
int
n
=
zis
.
read
(
bBuf
,
0
,
bBuf
.
length
);
if
(
n
!=
bb
.
length
||
!
Arrays
.
equals
(
bb
,
Arrays
.
copyOf
(
bBuf
,
n
)))
{
throw
new
RuntimeException
(
"ZipIS content doesn't match!"
);
try
(
ZipInputStream
zis
=
new
ZipInputStream
(
is
,
cs
))
{
ZipEntry
e
=
zis
.
getNextEntry
();
if
(
e
==
null
||
!
name
.
equals
(
e
.
getName
()))
throw
new
RuntimeException
(
"ZipIS name doesn't match!"
);
byte
[]
bBuf
=
new
byte
[
bb
.
length
<<
1
];
int
n
=
zis
.
read
(
bBuf
,
0
,
bBuf
.
length
);
if
(
n
!=
bb
.
length
||
!
Arrays
.
equals
(
bb
,
Arrays
.
copyOf
(
bBuf
,
n
)))
{
throw
new
RuntimeException
(
"ZipIS content doesn't match!"
);
}
}
zis
.
close
();
}
static
void
testZipFile
(
File
f
,
Charset
cs
,
String
name
,
String
comment
,
byte
[]
bb
)
throws
Exception
{
ZipFile
zf
=
new
ZipFile
(
f
,
cs
);
Enumeration
<?
extends
ZipEntry
>
zes
=
zf
.
entries
();
ZipEntry
e
=
(
ZipEntry
)
zes
.
nextElement
();
if
(!
name
.
equals
(
e
.
getName
())
||
!
comment
.
equals
(
e
.
getComment
()))
throw
new
RuntimeException
(
"ZipFile: name/comment doesn't match!"
);
InputStream
is
=
zf
.
getInputStream
(
e
);
if
(
is
==
null
)
throw
new
RuntimeException
(
"ZipFile: getIS failed!"
);
byte
[]
bBuf
=
new
byte
[
bb
.
length
<<
1
];
int
n
=
0
;
int
nn
=
0
;
while
((
nn
=
is
.
read
(
bBuf
,
n
,
bBuf
.
length
-
n
))
!=
-
1
)
{
n
+=
nn
;
try
(
ZipFile
zf
=
new
ZipFile
(
f
,
cs
))
{
Enumeration
<?
extends
ZipEntry
>
zes
=
zf
.
entries
();
ZipEntry
e
=
(
ZipEntry
)
zes
.
nextElement
();
if
(!
name
.
equals
(
e
.
getName
())
||
!
comment
.
equals
(
e
.
getComment
()))
throw
new
RuntimeException
(
"ZipFile: name/comment doesn't match!"
);
InputStream
is
=
zf
.
getInputStream
(
e
);
if
(
is
==
null
)
throw
new
RuntimeException
(
"ZipFile: getIS failed!"
);
byte
[]
bBuf
=
new
byte
[
bb
.
length
<<
1
];
int
n
=
0
;
int
nn
=
0
;
while
((
nn
=
is
.
read
(
bBuf
,
n
,
bBuf
.
length
-
n
))
!=
-
1
)
{
n
+=
nn
;
}
if
(
n
!=
bb
.
length
||
!
Arrays
.
equals
(
bb
,
Arrays
.
copyOf
(
bBuf
,
n
)))
{
throw
new
RuntimeException
(
"ZipFile content doesn't match!"
);
}
}
if
(
n
!=
bb
.
length
||
!
Arrays
.
equals
(
bb
,
Arrays
.
copyOf
(
bBuf
,
n
)))
{
throw
new
RuntimeException
(
"ZipFile content doesn't match!"
);
}
zf
.
close
();
}
static
void
test
(
String
csn
,
String
name
,
String
comment
)
throws
Exception
{
byte
[]
bb
=
"This is the conent of the zipfile"
.
getBytes
(
"ISO-8859-1"
);
byte
[]
bb
=
"This is the con
t
ent of the zipfile"
.
getBytes
(
"ISO-8859-1"
);
Charset
cs
=
Charset
.
forName
(
csn
);
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
ZipOutputStream
zos
=
new
ZipOutputStream
(
baos
,
cs
);
ZipEntry
e
=
new
ZipEntry
(
name
);
e
.
setComment
(
comment
);
zos
.
putNextEntry
(
e
);
zos
.
write
(
bb
,
0
,
bb
.
length
);
zos
.
closeEntry
();
zos
.
close
();
try
(
ZipOutputStream
zos
=
new
ZipOutputStream
(
baos
,
cs
))
{
ZipEntry
e
=
new
ZipEntry
(
name
);
e
.
setComment
(
comment
);
zos
.
putNextEntry
(
e
);
zos
.
write
(
bb
,
0
,
bb
.
length
);
zos
.
closeEntry
();
}
ByteArrayInputStream
bis
=
new
ByteArrayInputStream
(
baos
.
toByteArray
());
testZipInputStream
(
bis
,
cs
,
name
,
comment
,
bb
);
...
...
@@ -121,9 +120,9 @@ public class ZipCoding {
File
f
=
new
File
(
new
File
(
System
.
getProperty
(
"test.dir"
,
"."
)),
"zfcoding.zip"
);
FileOutputStream
fos
=
new
FileOutputStream
(
f
);
baos
.
writeTo
(
fos
);
fos
.
close
();
try
(
FileOutputStream
fos
=
new
FileOutputStream
(
f
))
{
baos
.
writeTo
(
fos
);
}
testZipFile
(
f
,
cs
,
name
,
comment
,
bb
);
if
(
"utf-8"
.
equals
(
csn
))
{
testZipFile
(
f
,
Charset
.
forName
(
"MS932"
),
name
,
comment
,
bb
);
...
...
test/java/util/zip/ZipFile/Assortment.java
浏览文件 @
47a4bc28
...
...
@@ -201,13 +201,12 @@ public class Assortment {
//----------------------------------------------------------------
// Write zip file using ZipOutputStream
//----------------------------------------------------------------
ZipOutputStream
zos
=
new
ZipOutputStream
(
new
FileOutputStream
(
zipName
));
for
(
Entry
e
:
entries
)
e
.
write
(
zos
);
zos
.
close
();
try
(
FileOutputStream
fos
=
new
FileOutputStream
(
zipName
);
ZipOutputStream
zos
=
new
ZipOutputStream
(
fos
))
{
for
(
Entry
e
:
entries
)
e
.
write
(
zos
);
}
//----------------------------------------------------------------
// Verify zip file contents using JarFile class
...
...
test/java/util/zip/ZipFile/Comment.java
浏览文件 @
47a4bc28
...
...
@@ -57,16 +57,15 @@ public class Comment {
private
static
void
writeZipFile
(
String
name
,
String
comment
)
throws
IOException
{
ZipOutputStream
zos
=
new
ZipOutputStream
(
new
FileOutputStream
(
name
));
try
{
try
(
FileOutputStream
fos
=
new
FileOutputStream
(
name
);
ZipOutputStream
zos
=
new
ZipOutputStream
(
fos
))
{
zos
.
setComment
(
comment
);
ZipEntry
ze
=
new
ZipEntry
(
entryName
);
ze
.
setMethod
(
ZipEntry
.
DEFLATED
);
zos
.
putNextEntry
(
ze
);
new
DataOutputStream
(
zos
).
writeUTF
(
entryContents
);
zos
.
closeEntry
();
}
finally
{
zos
.
close
();
}
}
...
...
@@ -74,30 +73,30 @@ public class Comment {
throws
Exception
{
// Check that Zip entry was correctly written.
ZipFile
zipFile
=
new
ZipFile
(
name
);
ZipEntry
zipEntry
=
zipFile
.
getEntry
(
entryName
);
InputStream
is
=
zipFile
.
getInputStream
(
zipEntry
);
String
result
=
new
DataInputStream
(
is
).
readUTF
();
if
(!
result
.
equals
(
entryContents
))
throw
new
Exception
(
"Entry contents corrupted"
);
try
(
ZipFile
zipFile
=
new
ZipFile
(
name
))
{
ZipEntry
zipEntry
=
zipFile
.
getEntry
(
entryName
);
InputStream
is
=
zipFile
.
getInputStream
(
zipEntry
);
String
result
=
new
DataInputStream
(
is
).
readUTF
();
if
(!
result
.
equals
(
entryContents
))
throw
new
Exception
(
"Entry contents corrupted"
);
}
// Check that comment length was correctly written.
RandomAccessFile
file
=
new
RandomAccessFile
(
name
,
"r"
);
file
.
seek
(
file
.
length
()
-
comment
.
length
()
-
ZipFile
.
ENDHDR
+
ZipFile
.
ENDCOM
);
int
b1
=
file
.
readUnsignedByte
();
int
b2
=
file
.
readUnsignedByte
();
if
(
b1
+
(
b2
<<
8
)
!=
comment
.
length
())
throw
new
Exception
(
"Zip file comment length corrupted"
);
try
(
RandomAccessFile
file
=
new
RandomAccessFile
(
name
,
"r"
))
{
// Check that comment length was correctly written.
file
.
seek
(
file
.
length
()
-
comment
.
length
()
-
ZipFile
.
ENDHDR
+
ZipFile
.
ENDCOM
);
int
b1
=
file
.
readUnsignedByte
();
int
b2
=
file
.
readUnsignedByte
();
if
(
b1
+
(
b2
<<
8
)
!=
comment
.
length
())
throw
new
Exception
(
"Zip file comment length corrupted"
);
// Check that comment was correctly written.
file
.
seek
(
file
.
length
()
-
comment
.
length
());
byte
[]
bytes
=
new
byte
[
comment
.
length
()];
file
.
readFully
(
bytes
);
zipFile
.
close
();
file
.
close
();
if
(!
comment
.
equals
(
new
String
(
bytes
,
"UTF8"
)))
throw
new
Exception
(
"Zip file comment corrupted"
);
// Check that comment was correctly written.
file
.
seek
(
file
.
length
()
-
comment
.
length
());
byte
[]
bytes
=
new
byte
[
comment
.
length
()];
file
.
readFully
(
bytes
);
if
(!
comment
.
equals
(
new
String
(
bytes
,
"UTF8"
)))
throw
new
Exception
(
"Zip file comment corrupted"
);
}
}
private
static
String
buildComment
(
int
length
)
{
...
...
test/java/util/zip/ZipFile/CopyJar.java
浏览文件 @
47a4bc28
...
...
@@ -31,18 +31,18 @@ import java.util.zip.*;
public
class
CopyJar
{
public
static
void
main
(
String
args
[])
throws
Exception
{
ZipFile
zf
=
new
ZipFile
(
new
File
(
System
.
getProperty
(
"test.src"
,
"."
),
"input.jar"
));
ZipEntry
ze
=
zf
.
getEntry
(
"ReleaseInflater.java"
);
ZipOutputStream
zos
=
new
ZipOutputStream
(
new
ByteArrayOutputStream
());
InputStream
in
=
zf
.
getInputStream
(
ze
);
byte
[]
b
=
new
byte
[
128
];
int
n
;
zos
.
putNextEntry
(
ze
);
while
((
n
=
in
.
read
(
b
))
!=
-
1
)
{
zos
.
write
(
b
,
0
,
n
);
try
(
ZipFile
zf
=
new
ZipFile
(
new
File
(
System
.
getProperty
(
"test.src"
,
"."
),
"input.jar"
)))
{
ZipEntry
ze
=
zf
.
getEntry
(
"ReleaseInflater.java"
);
ZipOutputStream
zos
=
new
ZipOutputStream
(
new
ByteArrayOutputStream
());
InputStream
in
=
zf
.
getInputStream
(
ze
);
byte
[]
b
=
new
byte
[
128
];
int
n
;
zos
.
putNextEntry
(
ze
);
while
((
n
=
in
.
read
(
b
))
!=
-
1
)
{
zos
.
write
(
b
,
0
,
n
);
}
zos
.
close
();
}
zos
.
close
();
zf
.
close
();
}
}
test/java/util/zip/ZipFile/CorruptedZipFiles.java
浏览文件 @
47a4bc28
...
...
@@ -47,21 +47,19 @@ public class CorruptedZipFiles {
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
ZipOutputStream
zos
=
new
ZipOutputStream
(
new
FileOutputStream
(
"x.zip"
));
try
{
try
(
FileOutputStream
fos
=
new
FileOutputStream
(
"x.zip"
);
ZipOutputStream
zos
=
new
ZipOutputStream
(
fos
))
{
ZipEntry
e
=
new
ZipEntry
(
"x"
);
zos
.
putNextEntry
(
e
);
zos
.
write
((
int
)
'x'
);
}
finally
{
zos
.
close
();
}
int
len
=
(
int
)(
new
File
(
"x.zip"
).
length
());
byte
[]
good
=
new
byte
[
len
];
FileInputStream
fis
=
new
FileInputStream
(
"x.zip"
);
fis
.
read
(
good
);
fis
.
close
();
fis
=
null
;
try
(
FileInputStream
fis
=
new
FileInputStream
(
"x.zip"
))
{
fis
.
read
(
good
);
}
new
File
(
"x.zip"
).
delete
();
int
endpos
=
len
-
ENDHDR
;
...
...
@@ -150,17 +148,14 @@ public class CorruptedZipFiles {
boolean
getInputStream
)
{
String
zipName
=
"bad"
+
(
uniquifier
++)
+
".zip"
;
try
{
FileOutputStream
fos
=
new
FileOutputStream
(
zipName
);
fos
.
write
(
data
);
fos
.
close
();
ZipFile
zf
=
new
ZipFile
(
zipName
);
try
{
try
(
FileOutputStream
fos
=
new
FileOutputStream
(
zipName
))
{
fos
.
write
(
data
);
}
try
(
ZipFile
zf
=
new
ZipFile
(
zipName
))
{
if
(
getInputStream
)
{
InputStream
is
=
zf
.
getInputStream
(
new
ZipEntry
(
"x"
));
is
.
read
();
}
}
finally
{
zf
.
close
();
}
fail
(
"Failed to throw expected ZipException"
);
}
catch
(
ZipException
e
)
{
...
...
@@ -170,8 +165,7 @@ public class CorruptedZipFiles {
unexpected
(
e
);
}
catch
(
Throwable
t
)
{
unexpected
(
t
);
}
finally
{
}
finally
{
new
File
(
zipName
).
delete
();
}
}
...
...
test/java/util/zip/ZipFile/DeleteTempJar.java
浏览文件 @
47a4bc28
...
...
@@ -53,34 +53,34 @@ public class DeleteTempJar
{
final
File
zf
=
File
.
createTempFile
(
"deletetemp"
,
".jar"
);
zf
.
deleteOnExit
();
JarOutputStream
jos
=
new
JarOutputStream
(
new
FileOutputStream
(
zf
));
JarEntry
je
=
new
JarEntry
(
"entry"
);
jos
.
putNextEntry
(
je
);
jos
.
write
(
"hello, world"
.
getBytes
(
"ASCII"
));
jos
.
close
();
try
(
FileOutputStream
fos
=
new
FileOutputStream
(
zf
);
JarOutputStream
jos
=
new
JarOutputStream
(
fos
))
{
JarEntry
je
=
new
JarEntry
(
"entry"
);
jos
.
putNextEntry
(
je
);
jos
.
write
(
"hello, world"
.
getBytes
(
"ASCII"
));
}
HttpServer
server
=
HttpServer
.
create
(
new
InetSocketAddress
((
InetAddress
)
null
,
0
),
0
);
HttpContext
context
=
server
.
createContext
(
"/"
,
new
HttpHandler
()
{
public
void
handle
(
HttpExchange
e
)
{
try
{
FileInputStream
fis
=
new
FileInputStream
(
zf
);
e
.
sendResponseHeaders
(
200
,
zf
.
length
());
OutputStream
os
=
e
.
getResponseBody
();
byte
[]
buf
=
new
byte
[
1024
];
int
count
=
0
;
while
((
count
=
fis
.
read
(
buf
))
!=
-
1
)
{
os
.
write
(
buf
,
0
,
count
);
try
(
FileInputStream
fis
=
new
FileInputStream
(
zf
))
{
e
.
sendResponseHeaders
(
200
,
zf
.
length
());
OutputStream
os
=
e
.
getResponseBody
();
byte
[]
buf
=
new
byte
[
1024
];
int
count
=
0
;
while
((
count
=
fis
.
read
(
buf
))
!=
-
1
)
{
os
.
write
(
buf
,
0
,
count
);
}
}
catch
(
Exception
ex
)
{
unexpected
(
ex
);
}
finally
{
e
.
close
();
}
fis
.
close
();
e
.
close
();
}
catch
(
Exception
ex
)
{
unexpected
(
ex
);
}
}
});
});
server
.
start
();
URL
url
=
new
URL
(
"jar:http://localhost:"
...
...
test/java/util/zip/ZipFile/EnumAfterClose.java
浏览文件 @
47a4bc28
...
...
@@ -33,10 +33,12 @@ import java.util.Enumeration;
public
class
EnumAfterClose
{
public
static
void
main
(
String
args
[])
throws
Exception
{
ZipFile
zf
=
new
ZipFile
(
new
File
(
System
.
getProperty
(
"test.src"
,
"."
),
"input.zip"
));
Enumeration
e
=
zf
.
entries
();
zf
.
close
();
Enumeration
e
;
try
(
ZipFile
zf
=
new
ZipFile
(
new
File
(
System
.
getProperty
(
"test.src"
,
"."
),
"input.zip"
)))
{
e
=
zf
.
entries
();
}
// ensure that the ZipFile is closed before checking the Enumeration
try
{
if
(
e
.
hasMoreElements
())
{
ZipEntry
ze
=
(
ZipEntry
)
e
.
nextElement
();
...
...
test/java/util/zip/ZipFile/GetDirEntry.java
浏览文件 @
47a4bc28
...
...
@@ -32,12 +32,12 @@ import java.util.zip.*;
public
class
GetDirEntry
{
public
static
void
main
(
String
args
[])
throws
Exception
{
ZipFile
zf
=
new
ZipFile
(
new
File
(
System
.
getProperty
(
"test.src"
,
"."
),
"input.jar"
));
ZipEntry
ze
=
zf
.
getEntry
(
"META-INF"
);
if
(
ze
==
null
)
{
throw
new
Exception
(
"failed to find a directory entry"
);
try
(
ZipFile
zf
=
new
ZipFile
(
new
File
(
System
.
getProperty
(
"test.src"
,
"."
),
"input.jar"
)))
{
ZipEntry
ze
=
zf
.
getEntry
(
"META-INF"
);
if
(
ze
==
null
)
{
throw
new
Exception
(
"failed to find a directory entry"
);
}
}
zf
.
close
();
}
}
test/java/util/zip/ZipFile/LargeZipFile.java
浏览文件 @
47a4bc28
...
...
@@ -93,51 +93,50 @@ public class LargeZipFile {
baos
.
write
(
bb
.
array
(),
0
,
DATA_SIZE
);
}
data
=
baos
.
toByteArray
();
ZipOutputStream
zos
=
new
ZipOutputStream
(
new
BufferedOutputStream
(
new
FileOutputStream
(
largeFile
)));
long
length
=
0
;
while
(
length
<
fileSize
)
{
ZipEntry
ze
=
new
ZipEntry
(
"entry-"
+
length
);
lastEntryName
=
ze
.
getName
();
zos
.
putNextEntry
(
ze
);
zos
.
write
(
data
,
0
,
data
.
length
);
zos
.
closeEntry
();
length
=
largeFile
.
length
();
try
(
FileOutputStream
fos
=
new
FileOutputStream
(
largeFile
);
BufferedOutputStream
bos
=
new
BufferedOutputStream
(
fos
);
ZipOutputStream
zos
=
new
ZipOutputStream
(
bos
))
{
long
length
=
0
;
while
(
length
<
fileSize
)
{
ZipEntry
ze
=
new
ZipEntry
(
"entry-"
+
length
);
lastEntryName
=
ze
.
getName
();
zos
.
putNextEntry
(
ze
);
zos
.
write
(
data
,
0
,
data
.
length
);
zos
.
closeEntry
();
length
=
largeFile
.
length
();
}
System
.
out
.
println
(
"Last entry written is "
+
lastEntryName
);
}
System
.
out
.
println
(
"Last entry written is "
+
lastEntryName
);
zos
.
close
();
}
static
void
readLargeZip
()
throws
Throwable
{
ZipFile
zipFile
=
new
ZipFile
(
largeFile
);
ZipEntry
entry
=
null
;
String
entryName
=
null
;
int
count
=
0
;
Enumeration
<?
extends
ZipEntry
>
entries
=
zipFile
.
entries
();
while
(
entries
.
hasMoreElements
())
{
entry
=
entries
.
nextElement
();
entryName
=
entry
.
getName
();
count
++;
}
System
.
out
.
println
(
"Number of entries read: "
+
count
);
System
.
out
.
println
(
"Last entry read is "
+
entryName
);
check
(!
entry
.
isDirectory
());
if
(
check
(
entryName
.
equals
(
lastEntryName
)))
{
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
InputStream
is
=
zipFile
.
getInputStream
(
entry
);
byte
buf
[]
=
new
byte
[
4096
];
int
len
;
while
((
len
=
is
.
read
(
buf
))
>=
0
)
{
baos
.
write
(
buf
,
0
,
len
);
try
(
ZipFile
zipFile
=
new
ZipFile
(
largeFile
))
{
ZipEntry
entry
=
null
;
String
entryName
=
null
;
int
count
=
0
;
Enumeration
<?
extends
ZipEntry
>
entries
=
zipFile
.
entries
();
while
(
entries
.
hasMoreElements
())
{
entry
=
entries
.
nextElement
();
entryName
=
entry
.
getName
();
count
++;
}
System
.
out
.
println
(
"Number of entries read: "
+
count
);
System
.
out
.
println
(
"Last entry read is "
+
entryName
);
check
(!
entry
.
isDirectory
());
if
(
check
(
entryName
.
equals
(
lastEntryName
)))
{
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
InputStream
is
=
zipFile
.
getInputStream
(
entry
);
byte
buf
[]
=
new
byte
[
4096
];
int
len
;
while
((
len
=
is
.
read
(
buf
))
>=
0
)
{
baos
.
write
(
buf
,
0
,
len
);
}
baos
.
close
();
is
.
close
();
check
(
Arrays
.
equals
(
data
,
baos
.
toByteArray
()));
}
baos
.
close
();
is
.
close
();
check
(
Arrays
.
equals
(
data
,
baos
.
toByteArray
()));
}
try
{
zipFile
.
close
();
}
catch
(
IOException
ioe
)
{
/* what can you do */
}
}
//--------------------- Infrastructure ---------------------------
...
...
test/java/util/zip/ZipFile/ManyEntries.java
浏览文件 @
47a4bc28
...
...
@@ -55,10 +55,10 @@ public class ManyEntries {
File
zipFile
=
new
File
(++
uniquifier
+
".zip"
);
try
{
zipFile
.
delete
();
ZipOutputStream
zos
=
new
ZipOutputStream
(
new
BufferedOutputStream
(
new
FileOutputStream
(
zipFile
)));
try
{
try
(
FileOutputStream
fos
=
new
FileOutputStream
(
zipFile
);
BufferedOutputStream
bos
=
new
BufferedOutputStream
(
fos
);
ZipOutputStream
zos
=
new
ZipOutputStream
(
bos
))
{
for
(
int
i
=
0
;
i
<
N
;
i
++)
{
ZipEntry
e
=
new
ZipEntry
(
"DIR/"
+
i
);
e
.
setMethod
(
method
);
...
...
@@ -75,13 +75,9 @@ public class ManyEntries {
zos
.
putNextEntry
(
e
);
zos
.
write
(
i
);
}
}
finally
{
zos
.
close
();
zos
=
null
;
}
ZipFile
zip
=
zip
=
new
ZipFile
(
zipFile
);
try
{
try
(
ZipFile
zip
=
new
ZipFile
(
zipFile
))
{
if
(!
(
zip
.
size
()
==
N
))
throw
new
Exception
(
"Bad ZipFile size: "
+
zip
.
size
());
Enumeration
entries
=
zip
.
entries
();
...
...
@@ -104,11 +100,8 @@ public class ManyEntries {
}
if
(
entries
.
hasMoreElements
())
throw
new
Exception
(
"too many elements"
);
}
finally
{
zip
.
close
();
}
}
finally
{
}
finally
{
zipFile
.
delete
();
}
}
...
...
test/java/util/zip/ZipFile/ManyZipFiles.java
浏览文件 @
47a4bc28
...
...
@@ -51,14 +51,14 @@ public class ManyZipFiles {
// Create some zip data
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
ZipOutputStream
zos
=
new
ZipOutputStream
(
baos
);
ZipEntry
ze
=
new
ZipEntry
(
"test"
);
zos
.
putNextEntry
(
ze
);
byte
[]
hello
=
"hello, world"
.
getBytes
(
"ASCII"
);
zos
.
write
(
hello
,
0
,
hello
.
length
);
zos
.
closeEntry
();
zos
.
finish
();
zos
.
close
();
try
(
ZipOutputStream
zos
=
new
ZipOutputStream
(
baos
))
{
ZipEntry
ze
=
new
ZipEntry
(
"test"
);
zos
.
putNextEntry
(
ze
);
byte
[]
hello
=
"hello, world"
.
getBytes
(
"ASCII"
);
zos
.
write
(
hello
,
0
,
hello
.
length
);
zos
.
closeEntry
();
zos
.
finish
();
}
byte
[]
data
=
baos
.
toByteArray
();
ZipFile
zips
[]
=
new
ZipFile
[
numFiles
];
...
...
@@ -90,9 +90,9 @@ public class ManyZipFiles {
for
(
int
i
=
0
;
i
<
numFiles
;
i
++)
{
File
f
=
File
.
createTempFile
(
"test"
,
".zip"
,
tmpdir
);
f
.
deleteOnExit
();
FileOutputStream
fos
=
new
FileOutputStream
(
f
);
fos
.
write
(
data
,
0
,
data
.
length
);
fos
.
close
();
try
(
FileOutputStream
fos
=
new
FileOutputStream
(
f
))
{
fos
.
write
(
data
,
0
,
data
.
length
);
}
try
{
zips
[
i
]
=
new
ZipFile
(
f
);
}
catch
(
Throwable
t
)
{
...
...
@@ -102,11 +102,12 @@ public class ManyZipFiles {
}
}
}
finally
{
// This finally block is due to bug 4171239. On
w
indows, if the
// This finally block is due to bug 4171239. On
W
indows, if the
// file is still open at the end of the VM, deleteOnExit won't
// take place. "new ZipFile(...)" opens the zip file, so we have
// to explicity close those opened above. This finally block can
// be removed when 4171239 is fixed.
// to explicitly close those opened above. This finally block can
// be removed when 4171239 is fixed. See also 6357433, against which
// 4171239 was closed as a duplicate.
for
(
int
i
=
0
;
i
<
numFiles
;
i
++)
{
if
(
zips
[
i
]
!=
null
)
{
try
{
...
...
test/java/util/zip/ZipFile/ReadAfterClose.java
浏览文件 @
47a4bc28
...
...
@@ -34,10 +34,13 @@ import java.util.*;
public
class
ReadAfterClose
{
public
static
void
main
(
String
[]
argv
)
throws
Exception
{
ZipFile
zf
=
new
ZipFile
(
new
File
(
System
.
getProperty
(
"test.src"
,
"."
),
"crash.jar"
));
ZipEntry
zent
=
zf
.
getEntry
(
"Test.java"
);
InputStream
in
=
zf
.
getInputStream
(
zent
);
zf
.
close
();
InputStream
in
;
try
(
ZipFile
zf
=
new
ZipFile
(
new
File
(
System
.
getProperty
(
"test.src"
,
"."
),
"crash.jar"
)))
{
ZipEntry
zent
=
zf
.
getEntry
(
"Test.java"
);
in
=
zf
.
getInputStream
(
zent
);
}
// ensure zf is closed at this point
try
{
in
.
read
();
}
catch
(
IOException
e
)
{
...
...
test/java/util/zip/ZipFile/ReadZip.java
浏览文件 @
47a4bc28
...
...
@@ -27,6 +27,10 @@
*/
import
java.io.*
;
import
java.nio.file.Files
;
import
java.nio.file.Paths
;
import
java.nio.file.StandardCopyOption
;
import
java.nio.file.StandardOpenOption
;
import
java.util.zip.*
;
public
class
ReadZip
{
...
...
@@ -38,71 +42,62 @@ public class ReadZip {
}
public
static
void
main
(
String
args
[])
throws
Exception
{
ZipFile
zf
=
new
ZipFile
(
new
File
(
System
.
getProperty
(
"test.src"
,
"."
),
"input.zip"
));
try
(
ZipFile
zf
=
new
ZipFile
(
new
File
(
System
.
getProperty
(
"test.src"
,
"."
),
"input.zip"
)))
{
// Make sure we throw NPE on null objects
try
{
unreached
(
zf
.
getEntry
(
null
));
}
catch
(
NullPointerException
e
)
{}
// Make sure we throw NPE on null objects
try
{
unreached
(
zf
.
getEntry
(
null
));
}
catch
(
NullPointerException
e
)
{}
try
{
unreached
(
zf
.
getInputStream
(
null
));
}
catch
(
NullPointerException
e
)
{}
try
{
unreached
(
zf
.
getInputStream
(
null
));
}
catch
(
NullPointerException
e
)
{}
ZipEntry
ze
=
zf
.
getEntry
(
"ReadZip.java"
);
if
(
ze
==
null
)
{
throw
new
Exception
(
"cannot read from zip file"
);
ZipEntry
ze
=
zf
.
getEntry
(
"ReadZip.java"
);
if
(
ze
==
null
)
{
throw
new
Exception
(
"cannot read from zip file"
);
}
}
zf
.
close
();
// Make sure we can read the zip file that has some garbage
// bytes padded at the end.
FileInputStream
fis
=
new
FileInputStream
(
new
File
(
System
.
getProperty
(
"test.src"
,
"."
),
"input.zip"
));
File
newZip
=
new
File
(
System
.
getProperty
(
"test.dir"
,
"."
),
"input2.zip"
);
FileOutputStream
fos
=
new
FileOutputStream
(
newZip
);
File
newZip
=
new
File
(
System
.
getProperty
(
"test.dir"
,
"."
),
"input2.zip"
);
Files
.
copy
(
Paths
.
get
(
System
.
getProperty
(
"test.src"
,
""
),
"input.zip"
),
newZip
.
toPath
(),
StandardCopyOption
.
REPLACE_EXISTING
);
byte
[]
buf
=
new
byte
[
1024
];
int
n
=
0
;
while
((
n
=
fis
.
read
(
buf
))
!=
-
1
)
{
fos
.
write
(
buf
,
0
,
n
);
}
fis
.
close
();
// pad some bytes
fos
.
write
(
1
);
fos
.
write
(
3
);
fos
.
write
(
5
);
fos
.
write
(
7
);
fos
.
close
();
try
{
zf
=
new
ZipFile
(
newZip
);
ze
=
zf
.
getEntry
(
"ReadZip.java"
);
try
(
OutputStream
os
=
Files
.
newOutputStream
(
newZip
.
toPath
(),
StandardOpenOption
.
APPEND
))
{
os
.
write
(
1
);
os
.
write
(
3
);
os
.
write
(
5
);
os
.
write
(
7
);
}
try
(
ZipFile
zf
=
new
ZipFile
(
newZip
))
{
ZipEntry
ze
=
zf
.
getEntry
(
"ReadZip.java"
);
if
(
ze
==
null
)
{
throw
new
Exception
(
"cannot read from zip file"
);
}
}
finally
{
zf
.
close
();
newZip
.
delete
();
}
// Read zip file comment
try
{
try
(
FileOutputStream
fos
=
new
FileOutputStream
(
newZip
);
ZipOutputStream
zos
=
new
ZipOutputStream
(
fos
))
{
ZipEntry
ze
=
new
ZipEntry
(
"ZipEntry"
);
zos
.
putNextEntry
(
ze
);
zos
.
write
(
1
);
zos
.
write
(
2
);
zos
.
write
(
3
);
zos
.
write
(
4
);
zos
.
closeEntry
();
zos
.
setComment
(
"This is the comment for testing"
);
}
ZipOutputStream
zos
=
new
ZipOutputStream
(
new
FileOutputStream
(
newZip
));
ze
=
new
ZipEntry
(
"ZipEntry"
);
zos
.
putNextEntry
(
ze
);
zos
.
write
(
1
);
zos
.
write
(
2
);
zos
.
write
(
3
);
zos
.
write
(
4
);
zos
.
closeEntry
();
zos
.
setComment
(
"This is the comment for testing"
);
zos
.
close
();
zf
=
new
ZipFile
(
newZip
);
ze
=
zf
.
getEntry
(
"ZipEntry"
);
if
(
ze
==
null
)
throw
new
Exception
(
"cannot read entry from zip file"
);
if
(!
"This is the comment for testing"
.
equals
(
zf
.
getComment
()))
throw
new
Exception
(
"cannot read comment from zip file"
);
try
(
ZipFile
zf
=
new
ZipFile
(
newZip
))
{
ZipEntry
ze
=
zf
.
getEntry
(
"ZipEntry"
);
if
(
ze
==
null
)
throw
new
Exception
(
"cannot read entry from zip file"
);
if
(!
"This is the comment for testing"
.
equals
(
zf
.
getComment
()))
throw
new
Exception
(
"cannot read comment from zip file"
);
}
}
finally
{
zf
.
close
();
newZip
.
delete
();
}
...
...
test/java/util/zip/ZipFile/ShortRead.java
浏览文件 @
47a4bc28
...
...
@@ -38,27 +38,29 @@ public class ShortRead {
try
{
final
String
entryName
=
"abc"
;
final
String
data
=
"Data disponible"
;
final
ZipOutputStream
zos
=
new
ZipOutputStream
(
new
FileOutputStream
(
zFile
));
zos
.
putNextEntry
(
new
ZipEntry
(
entryName
));
zos
.
write
(
data
.
getBytes
(
"ASCII"
));
zos
.
closeEntry
();
zos
.
close
();
try
(
FileOutputStream
fos
=
new
FileOutputStream
(
zFile
);
ZipOutputStream
zos
=
new
ZipOutputStream
(
fos
))
{
zos
.
putNextEntry
(
new
ZipEntry
(
entryName
));
zos
.
write
(
data
.
getBytes
(
"ASCII"
));
zos
.
closeEntry
();
}
final
ZipFile
zipFile
=
new
ZipFile
(
zFile
);
final
ZipEntry
zentry
=
zipFile
.
getEntry
(
entryName
);
final
InputStream
inputStream
=
zipFile
.
getInputStream
(
zentry
);
System
.
out
.
printf
(
"size=%d csize=%d available=%d%n"
,
zentry
.
getSize
(),
zentry
.
getCompressedSize
(),
inputStream
.
available
());
byte
[]
buf
=
new
byte
[
data
.
length
()];
final
int
count
=
inputStream
.
read
(
buf
);
if
(!
new
String
(
buf
,
"ASCII"
).
equals
(
data
)
||
count
!=
data
.
length
())
throw
new
Exception
(
"short read?"
);
zipFile
.
close
();
try
(
ZipFile
zipFile
=
new
ZipFile
(
zFile
))
{
final
ZipEntry
zentry
=
zipFile
.
getEntry
(
entryName
);
final
InputStream
inputStream
=
zipFile
.
getInputStream
(
zentry
);
System
.
out
.
printf
(
"size=%d csize=%d available=%d%n"
,
zentry
.
getSize
(),
zentry
.
getCompressedSize
(),
inputStream
.
available
());
byte
[]
buf
=
new
byte
[
data
.
length
()];
final
int
count
=
inputStream
.
read
(
buf
);
if
(!
new
String
(
buf
,
"ASCII"
).
equals
(
data
)
||
count
!=
data
.
length
())
throw
new
Exception
(
"short read?"
);
}
}
finally
{
zFile
.
delete
();
}
finally
{
zFile
.
delete
();
}
}
}
test/java/util/zip/zip.java
浏览文件 @
47a4bc28
...
...
@@ -322,57 +322,57 @@ public class zip {
void
create
(
OutputStream
out
)
throws
IOException
{
ZipOutputStream
zos
=
new
ZipOutputStream
(
out
,
cs
);
if
(
flag0
)
{
zos
.
setMethod
(
ZipOutputStream
.
STORED
);
}
for
(
File
file:
entries
)
{
addFile
(
zos
,
file
);
try
(
ZipOutputStream
zos
=
new
ZipOutputStream
(
out
,
cs
))
{
if
(
flag0
)
{
zos
.
setMethod
(
ZipOutputStream
.
STORED
);
}
for
(
File
file:
entries
)
{
addFile
(
zos
,
file
);
}
}
zos
.
close
();
}
boolean
update
(
InputStream
in
,
OutputStream
out
)
throws
IOException
{
ZipInputStream
zis
=
new
ZipInputStream
(
in
,
cs
);
ZipOutputStream
zos
=
new
ZipOutputStream
(
out
,
cs
);
ZipEntry
e
=
null
;
byte
[]
buf
=
new
byte
[
1024
];
int
n
=
0
;
boolean
updateOk
=
true
;
// put the old entries first, replace if necessary
while
((
e
=
zis
.
getNextEntry
())
!=
null
)
{
String
name
=
e
.
getName
();
if
(!
entryMap
.
containsKey
(
name
))
{
// copy the old stuff
// do our own compression
ZipEntry
e2
=
new
ZipEntry
(
name
);
e2
.
setMethod
(
e
.
getMethod
());
e2
.
setTime
(
e
.
getTime
());
e2
.
setComment
(
e
.
getComment
());
e2
.
setExtra
(
e
.
getExtra
());
if
(
e
.
getMethod
()
==
ZipEntry
.
STORED
)
{
e2
.
setSize
(
e
.
getSize
());
e2
.
setCrc
(
e
.
getCrc
());
}
zos
.
putNextEntry
(
e2
);
while
((
n
=
zis
.
read
(
buf
,
0
,
buf
.
length
))
!=
-
1
)
{
zos
.
write
(
buf
,
0
,
n
);
try
(
ZipInputStream
zis
=
new
ZipInputStream
(
in
,
cs
);
ZipOutputStream
zos
=
new
ZipOutputStream
(
out
,
cs
))
{
ZipEntry
e
=
null
;
byte
[]
buf
=
new
byte
[
1024
];
int
n
=
0
;
boolean
updateOk
=
true
;
// put the old entries first, replace if necessary
while
((
e
=
zis
.
getNextEntry
())
!=
null
)
{
String
name
=
e
.
getName
();
if
(!
entryMap
.
containsKey
(
name
))
{
// copy the old stuff
// do our own compression
ZipEntry
e2
=
new
ZipEntry
(
name
);
e2
.
setMethod
(
e
.
getMethod
());
e2
.
setTime
(
e
.
getTime
());
e2
.
setComment
(
e
.
getComment
());
e2
.
setExtra
(
e
.
getExtra
());
if
(
e
.
getMethod
()
==
ZipEntry
.
STORED
)
{
e2
.
setSize
(
e
.
getSize
());
e2
.
setCrc
(
e
.
getCrc
());
}
zos
.
putNextEntry
(
e2
);
while
((
n
=
zis
.
read
(
buf
,
0
,
buf
.
length
))
!=
-
1
)
{
zos
.
write
(
buf
,
0
,
n
);
}
}
else
{
// replace with the new files
File
f
=
entryMap
.
get
(
name
);
addFile
(
zos
,
f
);
entryMap
.
remove
(
name
);
entries
.
remove
(
f
);
}
}
else
{
// replace with the new files
File
f
=
entryMap
.
get
(
name
);
addFile
(
zos
,
f
);
entryMap
.
remove
(
name
);
entries
.
remove
(
f
);
}
}
// add the remaining new files
for
(
File
f:
entries
)
{
addFile
(
zos
,
f
);
// add the remaining new files
for
(
File
f:
entries
)
{
addFile
(
zos
,
f
);
}
}
zis
.
close
();
zos
.
close
();
return
updateOk
;
}
...
...
@@ -517,25 +517,25 @@ public class zip {
}
void
extract
(
String
fname
,
String
files
[])
throws
IOException
{
ZipFile
zf
=
new
ZipFile
(
fname
,
cs
);
Set
<
ZipEntry
>
dirs
=
newDirSet
();
Enumeration
<?
extends
ZipEntry
>
zes
=
zf
.
entries
();
while
(
zes
.
hasMoreElements
())
{
ZipEntry
e
=
zes
.
nextElement
();
InputStream
is
;
if
(
files
==
null
)
{
dirs
.
add
(
extractFile
(
zf
.
getInputStream
(
e
),
e
));
}
else
{
String
name
=
e
.
getName
();
for
(
String
file
:
files
)
{
if
(
name
.
startsWith
(
file
))
{
dirs
.
add
(
extractFile
(
zf
.
getInputStream
(
e
),
e
));
break
;
try
(
ZipFile
zf
=
new
ZipFile
(
fname
,
cs
))
{
Set
<
ZipEntry
>
dirs
=
newDirSet
();
Enumeration
<?
extends
ZipEntry
>
zes
=
zf
.
entries
();
while
(
zes
.
hasMoreElements
())
{
ZipEntry
e
=
zes
.
nextElement
();
InputStream
is
;
if
(
files
==
null
)
{
dirs
.
add
(
extractFile
(
zf
.
getInputStream
(
e
),
e
));
}
else
{
String
name
=
e
.
getName
();
for
(
String
file
:
files
)
{
if
(
name
.
startsWith
(
file
))
{
dirs
.
add
(
extractFile
(
zf
.
getInputStream
(
e
),
e
));
break
;
}
}
}
}
}
zf
.
close
();
updateLastModifiedTime
(
dirs
);
}
...
...
@@ -607,12 +607,12 @@ public class zip {
}
void
list
(
String
fname
,
String
files
[])
throws
IOException
{
ZipFile
zf
=
new
ZipFile
(
fname
,
cs
);
Enumeration
<?
extends
ZipEntry
>
zes
=
zf
.
entries
();
while
(
zes
.
hasMoreElements
())
{
printEntry
(
zes
.
nextElement
(),
files
);
try
(
ZipFile
zf
=
new
ZipFile
(
fname
,
cs
))
{
Enumeration
<?
extends
ZipEntry
>
zes
=
zf
.
entries
();
while
(
zes
.
hasMoreElements
())
{
printEntry
(
zes
.
nextElement
(),
files
);
}
}
zf
.
close
();
}
void
printEntry
(
ZipEntry
e
,
String
[]
files
)
throws
IOException
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录