Difference between revisions of "Compressed Serialization"

From Robowiki
Jump to navigation Jump to search
(moving CompressedSerialization page)
 
 
Line 1: Line 1:
 
If you ever want to store several somewhat large objects, this is probably the best way - (aside from carefully using the ''transient'' key word) - feel free to insert this code into your robots if you find yourself using up your disk space for your robot:
 
If you ever want to store several somewhat large objects, this is probably the best way - (aside from carefully using the ''transient'' key word) - feel free to insert this code into your robots if you find yourself using up your disk space for your robot:
<pre>
+
 
 +
<syntaxhighlight>
 
import java.io.*;
 
import java.io.*;
 
import java.util.zip.*;
 
import java.util.zip.*;
Line 51: Line 52:
 
}
 
}
  
</pre>
+
</syntaxhighlight>
 
What this basically does is compresses your serialized objects in zip files.  I can't remember exactly what degree of compression I got from doing this, but it seems like it was on the order of 1/10th the file size.
 
What this basically does is compresses your serialized objects in zip files.  I can't remember exactly what degree of compression I got from doing this, but it seems like it was on the order of 1/10th the file size.
  

Latest revision as of 07:14, 1 July 2010

If you ever want to store several somewhat large objects, this is probably the best way - (aside from carefully using the transient key word) - feel free to insert this code into your robots if you find yourself using up your disk space for your robot:

import java.io.*;
import java.util.zip.*;

public Object readCompressedObject(String filename)
{
	try
	{
		ZipInputStream zipin = new ZipInputStream(new
		FileInputStream(getDataFile(filename + ".zip")));
		zipin.getNextEntry();
		ObjectInputStream in = new ObjectInputStream(zipin);
		Object obj = in.readObject();
		in.close();
		return obj;
	}
	catch (FileNotFoundException e)
	{
		System.out.println("File not found!");
	}
	catch (IOException e)
	{
		System.out.println("I/O Exception");
	}
	catch (ClassNotFoundException e)
	{
		System.out.println("Class not found! :-(");
		e.printStackTrace();
	}
	return null;    //could not get the object
}
 
public void writeObject(Serializable obj, String filename)
{
	try
	{
		ZipOutputStream zipout = new ZipOutputStream(
                    new RobocodeFileOutputStream(getDataFile(filename + ".zip")));
		zipout.putNextEntry(new ZipEntry(filename));
		ObjectOutputStream out = new ObjectOutputStream(zipout);
		out.writeObject(obj);
		out.flush();
		zipout.closeEntry();
		out.close();
	}
	catch (IOException e)
	{
		System.out.println("Error writing Object:" + e);
	}
}

What this basically does is compresses your serialized objects in zip files. I can't remember exactly what degree of compression I got from doing this, but it seems like it was on the order of 1/10th the file size.