home *** CD-ROM | disk | FTP | other *** search
/ Tutto per Internet / Internet.iso / soft95 / Java / espints / espinst.exe / classes / espresso / ZippedFile.class (.txt) < prev   
Encoding:
Java Class File  |  1996-02-28  |  2.6 KB  |  106 lines

  1. package espresso;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5.  
  6. class ZippedFile extends GeneralFile {
  7.    String pathname;
  8.    String name;
  9.    ZipDir dir;
  10.  
  11.    static int get4LE(byte[] var0, int var1) {
  12.       return (var0[var1] & 255) + ((var0[var1 + 1] & 255) << 8) + ((var0[var1 + 2] & 255) << 16) + ((var0[var1 + 3] & 255) << 24);
  13.    }
  14.  
  15.    static int get2LE(byte[] var0, int var1) {
  16.       return (var0[var1] & 255) + ((var0[var1 + 1] & 255) << 8);
  17.    }
  18.  
  19.    GeneralFile open(String var1) {
  20.       return new ZippedFile(this.dir, String.valueOf(this.pathname).concat(String.valueOf(var1)));
  21.    }
  22.  
  23.    String[] list() throws IOException {
  24.       if (!this.isDirectory()) {
  25.          throw new IOException("not a directory");
  26.       } else {
  27.          return list(this.dir, this.pathname);
  28.       }
  29.    }
  30.  
  31.    static String[] list(ZipDir var0, String var1) {
  32.       int var2 = 0;
  33.  
  34.       for(int var3 = 0; var3 < var0.filenames.length; ++var3) {
  35.          if (var0.filenames[var3].startsWith(var1)) {
  36.             String var4 = var0.filenames[var3].substring(var1.length());
  37.             if (var4.indexOf(File.separatorChar) < 0) {
  38.                ++var2;
  39.             }
  40.          }
  41.       }
  42.  
  43.       String[] var5 = new String[var2];
  44.       var2 = 0;
  45.  
  46.       for(int var6 = 0; var6 < var0.filenames.length; ++var6) {
  47.          if (var0.filenames[var6].startsWith(var1)) {
  48.             String var7 = var0.filenames[var6].substring(var1.length());
  49.             if (var7.indexOf(File.separatorChar) < 0) {
  50.                var5[var2++] = var7;
  51.             }
  52.          }
  53.       }
  54.  
  55.       return var5;
  56.    }
  57.  
  58.    byte[] read() throws IOException {
  59.       if (!this.dir.isDirectory()) {
  60.          throw new IOException("cannot open");
  61.       } else {
  62.          int var1 = this.dir.index(this.name);
  63.          if (var1 < 0) {
  64.             throw new IOException("cannot open");
  65.          } else {
  66.             boolean var2 = false;
  67.             this.dir.r.seek((long)this.dir.offsets[var1]);
  68.             byte[] var3 = new byte[30];
  69.             this.dir.r.readFully(var3);
  70.             if (get4LE(var3, 0) != 67324752) {
  71.                throw new IOException("zip file corrupted");
  72.             } else if (get2LE(var3, 8) != 0) {
  73.                throw new IOException("zip file is compressed");
  74.             } else {
  75.                byte[] var4 = new byte[get4LE(var3, 18)];
  76.                this.dir.r.skipBytes(get2LE(var3, 26) + get2LE(var3, 28));
  77.                this.dir.r.readFully(var4);
  78.                return var4;
  79.             }
  80.          }
  81.       }
  82.    }
  83.  
  84.    boolean isDirectory() {
  85.       return this.dir.isDirectory() && this.dir.index(this.pathname) >= 0;
  86.    }
  87.  
  88.    boolean exists() {
  89.       return this.dir.isDirectory() && (this.dir.index(this.name) >= 0 || this.dir.index(this.pathname) >= 0);
  90.    }
  91.  
  92.    String getPath() {
  93.       return String.valueOf(String.valueOf(String.valueOf(this.dir.getPath()).concat(String.valueOf("("))).concat(String.valueOf(this.name))).concat(String.valueOf(")"));
  94.    }
  95.  
  96.    ZippedFile(ZipDir var1, String var2) {
  97.       this.dir = var1;
  98.       this.name = var2;
  99.       this.pathname = var2;
  100.       if (!var2.endsWith(File.separator)) {
  101.          this.pathname = String.valueOf(this.pathname).concat(String.valueOf(File.separator));
  102.       }
  103.  
  104.    }
  105. }
  106.