NPE при записи файла. Разница между ObjectOutputStream и OutputStreamWriter

340
26 апреля 2017, 10:09

Этот конструктор выполняется при создании экземпляра класса.

public RecordAdapter(Context context) {
    mContext = context;
    try {
        String str = "Привет";
        OutputStream fos = mContext.openFileOutput("memoria", Context.MODE_PRIVATE);
        ObjectOutputStream os = new ObjectOutputStream(fos);
        os.writeObject(str);
        os.close();
    } catch (Exception e) {
        Toast.makeText(mContext, "Произошла ошибка записи", Toast.LENGTH_LONG);
    }
}

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

Что изменится если я вместо того ,что в коде напишу это : os.writeObject(str.getBytes());

Я так понимаю OutputStreamWriter , это частный случай ObjectOutputStream. Случай когда мне нужно записать данные в текстовом формате. Если использовать ObjectOutputStream, то в файл запишется массив байт. Я запутался отличия бинарный файл от текстового, вроде одно и тоже, а вроде и нет. Если одно и то же, то почему два разных метода ?

Answer 1

ObjectOutputStream предназначен для сериализации объектов в поток.

OutputStreamWriter предназначен для сохранения текстовых данных в поток. Он умеет правильно работать с кодировками.

Если вы запишите строку в OutputStreamWriter, то он преобразует ее в набор байт в соответствии с установленной кодировкой.

Если вы запишите в ObjectOutputStream массив байт (os.writeObject(str.getBytes())), то никакой обработки кодировки не будет. Более того вы потеряет информацию о том, что это была строка и длинна массива тоже потеряется.

READ ALSO
Не создается таблица через hibernate

Не создается таблица через hibernate

В программе используется несколько подобных классов, но с ними проблем не возникаетНе создается только одна таблица

372
Краш приложения при десериализации

Краш приложения при десериализации

Результат работы первого приложения сериализуетсяВторое приложение десериализует полученный архив и падает

205
Экспорт таблицы из Excel в Java Swing

Экспорт таблицы из Excel в Java Swing

Есть файлxls В нём 5 листов с таблицами

455