안드로이드 개발 질문/답변
(글 수 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이 구현되어야 합니다.
구지 파일로 변환할 필요 없습니다.