import java.io.*; import java.util.zip.GZIPOutputStream; import java.io.FileOutputStream; public class pack { public pack() { } public void makeCacheFile() { try { packed = new GZIPOutputStream(new FileOutputStream("main_file_cache.dat")); } catch(Exception e) { System.out.println("Error making cache file"); System.out.println(e); } } public void write(String Filename) { System.out.println("writing: "+Filename); byte[] data = FileOperations.ReadFile(Filename); try { packed.write(data, currentOffset, data.length); //currentOffset = currentOffset+data.length; } catch(IOException e) { System.out.println("Error writing to cache file"); System.out.println(e); } } public void finish() { try { packed.finish(); packed.close(); } catch(Exception e) { System.out.println("Error closing cache file"); System.out.println(e); } } public void ProcessRules(String rinfo) { System.out.println("Parsing Rules..."); String lines[] = rinfo.split("\r\n"); int CurrentIndex = 0; for(int i = 0; i < lines.length; i++) { if(lines[i].startsWith("#")) continue; String commands[] = lines[i].split("="); String params[] = commands[1].split(","); if(commands[0].contains("folders")) try { Folders = new String[Integer.parseInt(params[0])]; } catch(Exception exception) { exception.printStackTrace(); } if(commands[0].contains("names")) { Folders[CurrentIndex] = params[0]; CurrentIndex++; } if(commands[0].contains("cachefolder")) cachefolder = params[0]; } } public static void main(String args[]) { pack p = new pack(); p.makeCacheFile(); p.ProcessRules(FileOperations.ReadFileText("pack.dat")); for(int i = 0; i < Folders.length; i++) { File dir = new File(cachefolder+Folders[i]); File[] children = dir.listFiles(); for (int x=0; x