1

ファイルからオブジェクトを直接読み書きできる、ある種のシリアライゼーションを試みています。

まず、文字をファイルに書き込んで読み取ろうとしました。これは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;
}
}
 }
4

2 に答える 2

1

この場合、EOFException は、読み取るデータがこれ以上ないことを意味します。これは、(この場合も) ファイルが空であることを意味するだけです。

なぜあなたはObjectInput/OutputStreams文字を書くだけで使用しているのですか? あなたはDataInput/OutputStreamsその使用法のために良いでしょう。

また、再スローするためだけに例外をキャッチしても意味がありません。

また、メソッドによって返されないローカル変数以外の場所に配置しない限り、ファイルから char を読み取る意味はありません。

于 2011-11-15T09:03:06.253 に答える
-1

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

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

于 2011-11-15T09:08:24.390 に答える