2011-11-15 1 views
1

필자는 파일에서 개체를 직접 읽고 쓸 수있는 일종의 직렬화를 시도하고 있습니다.자바 안드로이드에서 EOFException이 발생합니까? 도움이 필요

시작하려면 문자 하나를 파일에 쓰려고 시도하고 읽으려고했습니다. 이것은 나를 항상 EOF 예외를주는 유지합니다.

Android 기기에서 사용하려고합니다. 여기 내 코드입니다 :

public class TestAppActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    try { 
     WriteToFile(); 
     Load(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

public void Load() throws IOException 
{ 
    InputStream fis; 
    ObjectInputStream in = null; 
    try { 
     fis = new FileInputStream(Environment.getExternalStorageDirectory() + "\\test2.ser"); 
     in = new ObjectInputStream(fis); 
     char temp = in.readChar(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     in.close(); 
    } 
} 

public static void WriteToFile() throws Exception { 
    try { 
     OutputStream file = new FileOutputStream(Environment.getExternalStorageDirectory() + "\\test2.ser"); 
     ObjectOutput output = new ObjectOutputStream(file); 
     try { 
      output.writeChar('c'); 
     } finally { 
      output.close(); 
     } 
    } catch (IOException ex) { 
      throw ex; 
    }catch (Exception ex) { 
     throw ex; 
} 
} 
} 
+0

'WriteToFile'기능이 제대로 작동하는지 확인 했습니까? –

+0

EOFException에서 추적을 표시하십시오. 어떤 줄에서 예외가 발생 했습니까? –

답변

1

이 경우는, EOFException는은 (다시이 경우)에만 파일이 비어 있음을 의미 할 수 읽을 수 더 이상 데이터가 없습니다 의미합니다.

ObjectInput/OutputStreams을 쓰고 있지만 문자를 쓰는 이유는 무엇입니까? 그 용도로는 DataInput/OutputStreams을 사용하는 것이 좋습니다.

또한 예외를 다시 잡을 때만 예외를 잡을 필요가 없습니다.

또한 메서드에서 반환되지 않은 로컬 변수 이외의 다른 곳에 파일을 저장하지 않는 한 파일에서 char을 읽는 것이 중요하지 않습니다.

-1

다음 코드를 변경하여 샘플 프로젝트에이 코드를 가져 왔습니다.

나는 "\\test2.ser""/test2.ser"으로 바꿨다. 이것을 시도하십시오.

+0

EOFException을 설명하지 않습니다. – EJP