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 }