View Javadoc

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 }