home *** CD-ROM | disk | FTP | other *** search
- package espresso;
-
- import java.io.File;
- import java.io.IOException;
-
- class ZippedFile extends GeneralFile {
- String pathname;
- String name;
- ZipDir dir;
-
- static int get4LE(byte[] var0, int var1) {
- return (var0[var1] & 255) + ((var0[var1 + 1] & 255) << 8) + ((var0[var1 + 2] & 255) << 16) + ((var0[var1 + 3] & 255) << 24);
- }
-
- static int get2LE(byte[] var0, int var1) {
- return (var0[var1] & 255) + ((var0[var1 + 1] & 255) << 8);
- }
-
- GeneralFile open(String var1) {
- return new ZippedFile(this.dir, String.valueOf(this.pathname).concat(String.valueOf(var1)));
- }
-
- String[] list() throws IOException {
- if (!this.isDirectory()) {
- throw new IOException("not a directory");
- } else {
- return list(this.dir, this.pathname);
- }
- }
-
- static String[] list(ZipDir var0, String var1) {
- int var2 = 0;
-
- for(int var3 = 0; var3 < var0.filenames.length; ++var3) {
- if (var0.filenames[var3].startsWith(var1)) {
- String var4 = var0.filenames[var3].substring(var1.length());
- if (var4.indexOf(File.separatorChar) < 0) {
- ++var2;
- }
- }
- }
-
- String[] var5 = new String[var2];
- var2 = 0;
-
- for(int var6 = 0; var6 < var0.filenames.length; ++var6) {
- if (var0.filenames[var6].startsWith(var1)) {
- String var7 = var0.filenames[var6].substring(var1.length());
- if (var7.indexOf(File.separatorChar) < 0) {
- var5[var2++] = var7;
- }
- }
- }
-
- return var5;
- }
-
- byte[] read() throws IOException {
- if (!this.dir.isDirectory()) {
- throw new IOException("cannot open");
- } else {
- int var1 = this.dir.index(this.name);
- if (var1 < 0) {
- throw new IOException("cannot open");
- } else {
- boolean var2 = false;
- this.dir.r.seek((long)this.dir.offsets[var1]);
- byte[] var3 = new byte[30];
- this.dir.r.readFully(var3);
- if (get4LE(var3, 0) != 67324752) {
- throw new IOException("zip file corrupted");
- } else if (get2LE(var3, 8) != 0) {
- throw new IOException("zip file is compressed");
- } else {
- byte[] var4 = new byte[get4LE(var3, 18)];
- this.dir.r.skipBytes(get2LE(var3, 26) + get2LE(var3, 28));
- this.dir.r.readFully(var4);
- return var4;
- }
- }
- }
- }
-
- boolean isDirectory() {
- return this.dir.isDirectory() && this.dir.index(this.pathname) >= 0;
- }
-
- boolean exists() {
- return this.dir.isDirectory() && (this.dir.index(this.name) >= 0 || this.dir.index(this.pathname) >= 0);
- }
-
- String getPath() {
- return String.valueOf(String.valueOf(String.valueOf(this.dir.getPath()).concat(String.valueOf("("))).concat(String.valueOf(this.name))).concat(String.valueOf(")"));
- }
-
- ZippedFile(ZipDir var1, String var2) {
- this.dir = var1;
- this.name = var2;
- this.pathname = var2;
- if (!var2.endsWith(File.separator)) {
- this.pathname = String.valueOf(this.pathname).concat(String.valueOf(File.separator));
- }
-
- }
- }
-