EOFException в Java Android? Нужна помощь - PullRequest
1 голос
/ 15 ноября 2011

Я пытаюсь сделать какую-то сериализацию, где я могу напрямую читать и записывать объекты из файла.

Для начала я просто попытался записать символ в файл и попытался его прочитать.Это постоянно дает мне исключение 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;
}
}
 }

Ответы [ 2 ]

1 голос
/ 15 ноября 2011

В этом случае EOFException означает, что больше нет данных для чтения, что (опять же в этом случае) может означать только, что файл пуст.

Почему вы используете ObjectInput/OutputStreams, а только пишетесимволы?Для этого использования вам будет лучше использовать DataInput/OutputStreams.

Также нет смысла ловить исключения только для их отбрасывания.

Также нет смысла читать символ изфайл, если вы не собираетесь поместить его куда-либо, кроме локальной переменной, которая даже не возвращается методом.

0 голосов
/ 15 ноября 2011

Я импортировал этот код в мой пример проекта со следующим изменением.

я заменил "\\test2.ser" на "/test2.ser", и это сработало. пожалуйста, попробуйте это.

...