现在写我有这个类,我希望能够使用序列化保存和打开:
public class Region
implements Serializable
{
private final int inputNumberOfColumnsAlongXAxis;
private final int inputNumberOfColumnsAlongYAxis;
private double inputDataScaleReductionOnXAxis;
private double inputDataScaleReductionOnYAxis;
private int numberOfColumnsAlongXAxis;
private int numberOfColumnsAlongYAxis;
private int cellsPerColumn; // Z-Axis dimension
private float inhibitionRadius;
private final float percentMinimumOverlapScore;
private final float minimumOverlapScore;
// ----------------------------------------------------------
/**
* Save the current Region object on the view into a file named
* "TrainedRegion".
*/
public static byte[] serializeObject(Object region)
{
// TODO: save with current timestamp and use open pop-up
// String timeStamp = "" + System.currentTimeMillis() / 1000;
// String fileName = ("Region created at timestamp(seconds): " +
// timeStamp);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
ObjectOutput objectOutput = new ObjectOutputStream(baos);
objectOutput.writeObject(region);
objectOutput.close();
// Get the bytes of the serialized object
byte[] bytesOfSerializedObject = baos.toByteArray();
return bytesOfSerializedObject;
} catch(IOException ioe) {
Log.e("serializeObject", "error", ioe);
return null;
}
}
// ----------------------------------------------------------
/**
* Returns a previously saved Region object with the given name.
*
* @param fileName
* @return A previously saved Region object.
*/
public static Object deserializeObject(byte[] bytes)
{
// TODO: later read Region object saved in file named by the time stamp during
// saving.
// ObjectInputStream inputStream = new ObjectInputStream(new
// FileInputStream(fileName));
try {
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes));
Object object = in.readObject();
in.close();
return object;
} catch(ClassNotFoundException cnfe) {
Log.e("deserializeObject", "class not found error", cnfe);
return null;
} catch(IOException ioe) {
Log.e("deserializeObject", "io error", ioe);
return null;
}
}
}
以下是在我的“屏幕”类中,它充当我上面的模型和我的视图(屏幕)的控制器:
// ----------------------------------------------------------
/**
* I want to be able to open a Region instance that was saved.
*/
public void openClicked()
{
// open the file created below in save method and write all the bytes into
// the global region instance for this class. How can do this?
this.region = (Region) this.region.deserializeObject(savedRegionInBytes);
}
// ----------------------------------------------------------
/**
*
*/
public void saveClicked()
{
this.savedRegionInBytes = this.region.serializeObject(this.region);
// TODO: write savedRegionInBytes to a file. How can I do this?
}
此外,如果有一种更简单的方法可以将对象序列化为 android 中的文件,我很想听听。谢谢!