2011-11-15 14 views
1

私は直接ファイルからオブジェクトを読み書きすることができるいくつかの種類のシリアル化をしようとしています。Java Androidの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でより良いでしょう。

また、例外をキャッチするだけで、それらを再投入することはありません。あなたも、メソッドによって返されていないローカル変数以外のどこかにそれを置くしようとしている場合を除き

はまた、ファイルから文字を読んでも意味がありません。

-1

次の変更を加えてサンプルプロジェクトにこのコードをインポートしました。

私は"/test2.ser""\\test2.ser"を交換し、それが働きました。これを試してください。

+0

EOFExceptionについて説明しません。 – EJP

関連する問題