我有以下问题。我正在设计手写应用程序。我不知道如何将我的对象(LogInfo)写入和读取到文件中。我知道我应该重写 write 和 read 方法,但我仍然不知道该怎么做。谁能给我明确的回答我的问题?
我的班级如下:
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import android.graphics.Point;
public class LogInfo implements Serializable{
/**
*
*/
private static final long serialVersionUID = -5777674941129067422L;
transient public static List<Point[][]> strokes;
transient public static List<byte[]> codes;
public LogInfo()
{
strokes = new ArrayList<Point[][]>();
codes = new LinkedList<byte[]>();
}
private synchronized void writeObject(ObjectOutputStream stream) throws IOException {
stream.defaultWriteObject();
//stream.writeInt(strokes.size());
//Point[][] pointsArray;
//for (int i=0; i<strokes.size(); i++)
//{
// pointsArray = ((Point[][])strokes.get(i));
// for (int j = 0; j < pointsArray.length; j++)
// for (int k = 0; k < pointsArray[j].length; k++)
// {
// stream.writeInt(pointsArray[j][k].x);
// stream.writeInt(pointsArray[j][k].y);
// //stream.writeObject(elementData[i]);
// }
//}
stream.writeInt(codes.size());
for (int i=0; i<codes.size(); i++)
{
stream.write(codes.get(i));
}
}
private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException
{
stream.defaultReadObject();
int codesSize = stream.readInt();
for (int i=0; i<codesSize; i++)
{
byte[] buffer = null;
stream.read(buffer, 0, 3);
codes.add(buffer);
}
}
}
Strokes 是一个 ArrayList 包含 Point 类型的二维数组(对应于笔画编号和与之相关的点)
Codes 是一个数组,我在其中存储字符(3 个字节 = 1 个字符)
因此,如果我使用 2 个笔画写“A”,笔画和代码大小为 2,并且代码包含写在 3 个字节上的字符 A。
有人可以告诉我如何编写和阅读这些对象吗?