1

을주고있다 다시 객체로 파일 :(ObjectInputStream를) ObjectInput.readObject는() 나는이 클래스가 나에게 빈 개체

public static void saveData(){ 
    ObjectOutput out; 
    try { 
     //primero comprobamos si existe el directorio, y si no, lo creamos. 
     File folder = new File(Environment.getExternalStorageDirectory() + "/C/"); 
     if(!folder.exists()) 
      folder.mkdirs(); 

     File outFile = new File(Environment.getExternalStorageDirectory(), "/C/appSaveState.data"); 
     out = new ObjectOutputStream(new FileOutputStream(outFile)); 
     out.writeObject(saveState); 
     out.close(); 
    } catch (Exception e) {e.printStackTrace();} 
} 


public static void loadData(){ 
    ObjectInput in; 
    try { 
     File inFile = new File(Environment.getExternalStorageDirectory(), "/C/appSaveState.data"); 
     in = new ObjectInputStream(new FileInputStream(inFile));   
     saveState=(SaveState) in.readObject(); 
     in.close(); 
    } catch (Exception e) {e.printStackTrace();} 
} 

나는 객체를 저장할 때마다이 내 응용 프로그램이 닫히고 난 내 응용 프로그램이 열릴 때 sdcard에 각 시간에서 개체를 읽고 그것을 잘 작동합니다. 문제는 내 애플 리케이션 (1.01)의 최신 버전을 만들 때 온다. 응용 프로그램을 시작할 때 sdcard에서 파일을 읽으려고하면 파일이 읽히지 만 객체 클래스의 모든 변수는 비어 있으며 실제로는 비어 있지 않습니다.

왜 내 코드가 제대로 작동하지 않습니까? 문제를 해결하려면 어떻게해야합니까?

+0

첫째, 당신의 끔찍한 예외 처리를 제거하십시오. 거의'IOException'을 잡아서는 안되며,'e.printStackTrace()'가 관련 로그로 갈 것이라는 것이 분명하지 않습니다. *가? 또한,'close' 호출은'finally' 블록 내에 있어야합니다. –

+0

나는 어떤 예외도 얻지 못하고있다. 나는 단지 빈 객체를 얻고있다. – NullPointerException

+0

예외 처리가 주어진다면 분명히 * 통지 *겠습니까? 문제를 보여주는 짧지 만 완전한 프로그램을 제작할 수 있습니까? –

답변

1

질문을 더 읽기 쉽고 이해하기 쉽도록 편집하려고 시도했습니다. 다행히도 좋은 답변을 얻는 데 도움이되기를 바랍니다.

나는 같은 버전 1.0을 사용하여 읽을 수있는 다음과 같은

  1. 시도하는 것이 좋습니다. 이렇게하면 "버전"/ 매니페스트 관련 문제가 제거됩니다.
  2. 귀하의 FullMagazine이 근본 원인 일 수 있습니다, 그 개체를 제거하고 다시 시도하십시오.

내가 찾은 것을 알려주십시오. 흥미로운 질문입니다.

+0

버전 1.0을 사용하여 읽으려고하면 읽는 데 문제가 없습니다. 올바른 개체가 나타납니다. 나는 당신이 당신의 요점으로 무엇을 의미하는지 이해하지 못합니다. 2. 제가 그 대상을 분명히 제거한다면 그것을 읽을 수 없습니다. – NullPointerException

+0

FullMagazine 개체를 제거하면 "제거하여 디버그"하고 근본 원인을 찾을 수 있습니다 :). – Siddharth

+0

당신이 의미하는 바를 이해하지 못한다면, 앱을 시작할 때마다 fullData 객체가 loadData 함수로 생성됩니다. SaveState 클래스의 다른 모든 요소와 마찬가지로 – NullPointerException