안드로이드 개발 질문/답변
(글 수 45,052)
// 쓰는 부분
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("/sdcard/tmp/dummy.dat"));
oos.writeInt(1);
try {
oos.writeObject(surfInfo); oos.close();
} catch(IOException e) {
// 여기에서 항상 예외가...
}
// 읽는 부분
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("/sdcard/tmp/dummy.dat"));
byte[] buf = new byte[ois.available()];
ois.read(buf);환장 하겠네요; 그냥 쓰고 바로 읽어 들이는데도 딱 앞에 쓴 int만 읽어옵니다... 제가 뭐 잘못 쓴게 있나요?
저기 위에 oos에 객체를 쓰는 부분에서 항상 예외가 발생합니다. 근데 파일 크기는 또 int형 하나만 달랑 쓴 크기가 아니라서
저장이 잘 된거 같은데 뭐가 문제일까요? 아! 그리고 저기 surfInfo는 객체입니다.
참... 혹시 한가지 짚이는게 있는데 저 surfInfo객체 안에 Bitmap타입의 멤버가 있는데 이녀석이 Serializable하지 않는다는게
걸리네요..




NotSerializableException 일것 같지만요.
http://developer.android.com/reference/java/io/NotSerializableException.html
객체를 byte로 변환하기 위해선 어차피 Serializable이나 Externalizable이 구현되어야 합니다.
구지 파일로 변환할 필요 없습니다.