View Javadoc
1   /**
2    * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3    */
4   package net.sourceforge.pmd.util.datasource;
5   
6   import java.io.IOException;
7   import java.io.InputStream;
8   import java.util.zip.ZipEntry;
9   import java.util.zip.ZipFile;
10  
11  
12  /**
13   * DataSource implementation to read data from an entry
14   * in a zip or jar file.
15   */
16  public class ZipDataSource implements DataSource {
17      private ZipFile zipFile;
18      private ZipEntry zipEntry;
19  
20      /**
21       * @param zipFile  the ZipFile
22       * @param zipEntry the ZipEntry containing the file to read
23       */
24      public ZipDataSource(ZipFile zipFile, ZipEntry zipEntry) {
25          this.zipFile = zipFile;
26          this.zipEntry = zipEntry;
27      }
28  
29      public InputStream getInputStream() throws IOException {
30          return zipFile.getInputStream(zipEntry);
31      }
32  
33      public String getNiceFileName(boolean shortNames, String inputFileName) {
34          // FIXME: this could probably be done better
35          return zipFile.getName() + ":" + zipEntry.getName();
36      }
37  }