All pastes #402196 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-03-19 19:46 UTC
rendered paste body
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<children.length; x++)
			{
			    if(children[x].isFile()){
			    String filename = children[x].toString();
			    p.write(filename);
			    }
		        }
		}
		p.finish();
    }

    public static String Folders[];
    public static String cachefolder;
    public static GZIPOutputStream packed;
    public static int currentOffset;
}