다음과 같은 문제가 있습니다. 필기를위한 응용 프로그램을 디자인하고 있습니다. 내 Object (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를이다
코드의 배열 (IT 관련 획수 포인트에 해당)은 다음과 같이
내 클래스는 문자를 저장합니다 (3 바이트 = 1 문자)
따라서 2 획을 사용하여 "A"라고 쓰면 획 및 코드 크기는 2이고 코드에는 3 바이트로 작성된 문자 A가 포함됩니다.
누군가이 글을 어떻게 쓰고 읽을 수 있습니까?
저는 Point 클래스가 Serializable이 아니라고 생각합니다. – Marek
또한 기본 구현을 사용할 때 파일에 쓰여지는 유일한 정보는 클래스 경로와 일부 무작위 문자 (???? com.myapp.LogInfo ?? [email protected] xp)입니다.이 정보는 반드시 있어야하는 정보가 아닙니다. . 파일에 클래스 이름이 쓰여진 이유는 무엇입니까? – Marek
아무도 대답을 모릅니다. : ( – Marek