Android — сохранение и чтение объектов — StreamCorruptedException

#java #android

#java #Android

Вопрос:

Я написал этот код, чтобы попытаться сохранить, а затем прочитать объект, но он выдает ошибку StreamCorruptedException.

 public class MainActivity extends AppCompatActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    WHClass who = new WHClass();
    who.id = 5;
    who.distance = 36;
    who.name = "Johnny Bravo";


    try {
        FileOutputStream fos = new FileOutputStream( getStorageDir("run.txt") );
        ObjectOutputStream os = new ObjectOutputStream(fos);
        os = new ObjectOutputStream(fos);
        os.writeObject(who);
        os.close();
        fos.close();
    } catch (IOException e) {

        e.printStackTrace();
        Toast.makeText(getApplicationContext(),"OOOPS WHEN WRITE",Toast.LENGTH_SHORT).show();
    }

    /////////////////////////////////////////////

    try {
        FileInputStream fis = new FileInputStream( getStorageDir("run.txt") );
        ObjectInputStream is = new ObjectInputStream(fis);
        WHClass whoRead = (WHClass) is.readObject();
        is.close();
        fis.close();

        Toast.makeText(getApplicationContext(),whoRead.name,Toast.LENGTH_SHORT).show();

    } catch (IOException | ClassNotFoundException e) {

        e.printStackTrace();
        Toast.makeText(getApplicationContext(),"OOOPS WHEN READ",Toast.LENGTH_SHORT).show();
    }





}
  

класс:

 package com.example.xmlreadwriter;

import java.io.Serializable;

public class WHClass implements Serializable {

    int id;
    int distance;
    String name;

}
  

когда я запускаю его, сохранение кажется нормальным, но StreamCorruptedException при чтении… что вы думаете?

Комментарии:

1. вы проверили это javamex.com/tutorials/io/StreamCorruptedException . shtml

2. спасибо, я заставил его работать, заменив .close на .reset();

Ответ №1:

Я заставил его работать, заменив os.close на os.reset ();