Этот конструктор выполняется при создании экземпляра класса.
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, то в файл запишется массив байт. Я запутался отличия бинарный файл от текстового, вроде одно и тоже, а вроде и нет. Если одно и то же, то почему два разных метода ?
ObjectOutputStream предназначен для сериализации объектов в поток.
OutputStreamWriter предназначен для сохранения текстовых данных в поток. Он умеет правильно работать с кодировками.
Если вы запишите строку в OutputStreamWriter, то он преобразует ее в набор байт в соответствии с установленной кодировкой.
Если вы запишите в ObjectOutputStream массив байт (os.writeObject(str.getBytes())
), то никакой обработки кодировки не будет. Более того вы потеряет информацию о том, что это была строка и длинна массива тоже потеряется.
Виртуальный выделенный сервер (VDS) становится отличным выбором
В программе используется несколько подобных классов, но с ними проблем не возникаетНе создается только одна таблица
Write voice recorder with voice control
Результат работы первого приложения сериализуетсяВторое приложение десериализует полученный архив и падает