我正在尝试进行某种序列化,可以直接从文件读取和写入对象。

首先,我只是尝试将一个字符写入文件并尝试读取它。这总是使我总是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;
}
}
 }

最佳答案

在这种情况下,EOFException意味着不再有任何数据要读取,(同样在这种情况下)只能表示文件为空。

为什么使用ObjectInput/OutputStreams但只写字符?对于这种用法,最好使用DataInput/OutputStreams

同样,捕获异常只是将它们重新抛出没有意义。

同样,从文件读取char毫无意义,除非您要将其放置在该方法甚至没有返回的局部变量之外的其他位置。

08-28 04:36