1 /*
2 * Fsgrep is a simple Java application which allows a user to
3 * search all files in a directory structure for lines matching
4 * a given pattern. Its functionality is a combination of the
5 * Unix 'find' and 'grep' utilities.
6 * Visit [http://fsgrep.sourceforge.net/] for more information.
7 *
8 * Copyright (C) 2003-2006 Murali Krishnan [murali_ca_us@users.sourceforge.net]
9 *
10 * Fsgrep is free software; you can redistribute it and/or modify
11 * it under the terms of version 2 of the GNU General Public
12 * License as published by the Free Software Foundation.
13 *
14 * Fsgrep is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with Fsgrep (see the file named LICENSE.txt); if not, write
21 * to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
22 * Boston, MA 02111-1307 USA
23 */
24
25 package mk.fsgrep.match;
26
27 import java.io.*;
28 import java.util.*;
29 import java.util.zip.*;
30
31 /***
32 *
33 *
34 * @author Murali Krishnan
35 *
36 */
37 public class ZipSearch extends FileSearch {
38
39 //------------------------------------------------------------
40 //- Class Variables
41
42
43
44 //------------------------------------------------------------
45 //- Class Functions
46
47
48
49 //------------------------------------------------------------
50 //- Instance Variables
51
52
53
54 //------------------------------------------------------------
55 //- Constructors
56
57
58 //------------------------------------------------------------
59 //- Accessors
60
61
62
63 //------------------------------------------------------------
64 //- Settors
65
66
67
68 //------------------------------------------------------------
69 //- Private/Protected Utility Functions
70
71
72
73 //------------------------------------------------------------
74 //- Public Interface Functions
75
76
77
78 //------------------------------------------------------------
79 //- Class Interface Functions
80
81 public void search() {
82 try {
83 ZipFile zip = new ZipFile(getFile().getFile());
84 Enumeration enumer = zip.entries();
85 while (enumer.hasMoreElements()) {
86 ZipEntry entry = (ZipEntry) enumer.nextElement();
87 if (!entry.isDirectory()) {
88 String filename = entry.getName();
89 if (getRE().matcher(filename).find()) {
90 incrementCount();
91 MatchResult result = getOrCreateResults();
92 result.add(filename);
93 }
94 }
95
96 incrementLinesSearched();
97 }
98 } catch (IOException ioe) {
99 System.err.println("Problem reading [" + getFile() + "].");
100 ioe.printStackTrace();
101 }
102 }
103
104
105
106 //------------------------------------------------------------
107 //- Inner Classes
108
109
110
111 //------------------------------------------------------------
112 //- Main
113
114
115
116 }