마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

HashMap<String, Bitmap> 형식을 FileOutputStream 을통해 저장할수는 없을까요?

0 추천
HashMap<String, Bitmap> 형식을 FileOutputStream 을통해 저장할수는 없을까요?
 
제가 이미지로 된 교제를 열면 그 위에 그림판 기능을 넣은 앱을 만들고있습니다.
 
이미지가 여러장이다 보니  HashMap<String, Bitmap> 를 통해서 String에는 페이지숫자를 넣고 Bitmap에는 판서한 내용을 담구요
 
그리고 저장하기를 누르면
try {
      FileOutputStream fos = openFileOutput("TestSampleData1.dat",
        Context.MODE_WORLD_WRITEABLE);
      ObjectOutputStream oos = new ObjectOutputStream(fos);
      board.savepage(Now_page);//현재 페이지 내용을 HashMap<String, Bitmap> hm에 저장하는 함수
      oos.writeObject(board.hm);//
      oos.close();
      fos.close();
     } catch (Exception e) {
      e.printStackTrace();
      Log.e("저장실패:", e.getMessage());
     }
 
이 소스를 통하여 .dat 파일로 저장하고 다시 이파일을 불러오려고 합니다.
 
불러오기
 
try {// 파일에서 읽어오기 위한 스트림 객체 얻어오기(경로는 써주지 않아도 된다, 약속된 위치가 있기 때문)
      FileInputStream fis = openFileInput("TestSampleData1.dat");
      // 객체를 읽어들이기 위해서 objectInputStream으로 감싼다
      ObjectInputStream ois = new ObjectInputStream(fis);
      // 객체를 읽어와서 원래 데이터 형태로 형변환한다.
      HashMap<String, Bitmap> readedObject = (HashMap<String, Bitmap>) ois
        .readObject();.
      board.hm =  readedObject;
      board.pages(Now_page);//현재 화면에 뿌려주는 함수
     } catch (Exception e) {
      Log.e("불러오기실패:", e.getMessage());
     }
 
그런데 저장하기를 누르면
java.io.NotSerializableException: android.graphics.Bitmap
이게 뜨는데 직렬화를 해야한다고 하는데 어떻게 직렬화를 해야할지 모르겠습니다.
어떻게 해야할까요?

 

브이v (1,500 포인트) 님이 2014년 2월 23일 질문

1개의 답변

0 추천
 
채택된 답변
비트맵은 각각 이미지 파일로 저장하시고, ObjectOutputStream 으로는 페이지 번호와 파일 경로를 저장하세요.
익명사용자 님이 2014년 2월 24일 답변
브이v님이 2014년 11월 28일 채택됨
그방법 말고는 안될까요 ㅠ 하나의 dat파일에 다 집어 넣고싶은데 흠 ^^;;
...