我遇到以下問題。我正在設計手寫應用程序。 我不知道如何寫入和讀取我的對象(LogInfo)到文件中。我知道我應該重寫寫入和讀取方法,但我仍然不確定如何去做。任何人都可以給我明確的答案嗎?將自定義對象寫入並讀取文件android
我類如下:
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);
}
}
}
筆畫是包含指向型的2維陣列的ArrayList(對應於與它相關的筆劃數和分)
代碼是其中一個陣列我存儲字符(3個字節= 1個字符)
因此,如果我使用2個筆劃寫入「A」,筆劃和代碼大小爲2,並且代碼包含寫入3個字節的字符A.
有人能告訴我怎麼寫和讀這個對象?
我認爲Point類不是Serializable。 – Marek 2013-05-09 01:16:10
另外,當我使用默認實現時,寫入文件的唯一信息是類路徑和一些隨機字符([email protected] xp),肯定不是它應該是的信息。爲什麼有一個類名寫入文件? – Marek 2013-05-09 01:25:40
沒有人知道答案? :( – Marek 2013-05-09 04:08:16