svn-gvsig-desktop / tags / Root_CqCMSDvp / libraries / libCq CMS for java.old / src / org / cresques / io / ZipFileFolder.java @ 1732
History | View | Annotate | Download (1.69 KB)
1 | 2 | luisw | /*
|
---|---|---|---|
2 | * Created on 03-may-2004
|
||
3 | *
|
||
4 | * @author "Luis W. Sevilla" <sevilla_lui@gva.es>
|
||
5 | */
|
||
6 | package org.cresques.io; |
||
7 | |||
8 | import java.io.IOException; |
||
9 | import java.io.InputStream; |
||
10 | import java.util.Enumeration; |
||
11 | import java.util.zip.ZipEntry; |
||
12 | import java.util.zip.ZipFile; |
||
13 | |||
14 | /**
|
||
15 | *
|
||
16 | *
|
||
17 | * @author "Luis W. Sevilla" <sevilla_lui@gva.es>* @author administrador
|
||
18 | */
|
||
19 | |||
20 | public class ZipFileFolder extends FileFolder { |
||
21 | String zName = null; |
||
22 | public ZipFile file = null; |
||
23 | |||
24 | public ZipFileFolder() {
|
||
25 | super();
|
||
26 | } |
||
27 | |||
28 | /**
|
||
29 | * Constructor.
|
||
30 | *
|
||
31 | * @param fname
|
||
32 | */
|
||
33 | |||
34 | public ZipFileFolder(String fName) throws IOException { |
||
35 | 7 | luisw | fName = DataSource.normalize(fName);
|
36 | 2 | luisw | if (isUrl(fName))
|
37 | zName = getZName(fName); |
||
38 | else
|
||
39 | zName = fName; |
||
40 | file = new ZipFile(zName); |
||
41 | } |
||
42 | |||
43 | /**
|
||
44 | * Analiza un nombre de fichero en formato zip://zipname.zip?file.ext
|
||
45 | * @param urlName
|
||
46 | */
|
||
47 | |||
48 | public static boolean isUrl(String name) { |
||
49 | String str = name.substring(0,3); |
||
50 | str.toLowerCase(); |
||
51 | if (str.compareTo("zip") == 0) |
||
52 | return true; |
||
53 | return false; |
||
54 | } |
||
55 | |||
56 | private String getZName(String urlName) { |
||
57 | return urlName.substring(6,urlName.indexOf("?")); |
||
58 | } |
||
59 | private String getFName(String urlName) { |
||
60 | return urlName.substring(urlName.indexOf("?")+1); |
||
61 | } |
||
62 | |||
63 | 5 | luisw | public ZipEntry getZipEntry(String fName) throws IOException { |
64 | 2 | luisw | InputStream is = null; |
65 | if (isUrl(fName))
|
||
66 | fName = getFName(fName); |
||
67 | 5 | luisw | return file.getEntry(fName);
|
68 | } |
||
69 | |||
70 | public InputStream getInputStream(String fName) throws IOException { |
||
71 | return file.getInputStream(getZipEntry(fName));
|
||
72 | } |
||
73 | |||
74 | public InputStream getInputStream(ZipEntry ze) throws IOException { |
||
75 | 2 | luisw | return file.getInputStream(ze);
|
76 | } |
||
77 | |||
78 | public int count() { return file.size(); } |
||
79 | |||
80 | public Enumeration entries() { return file.entries();} |
||
81 | } |