Правило, которое у меня есть, - использовать один и тот же тип потока для чтения и записи. Поэтому, если вы открыли файл для записи, используя openFileOutput
, используйте openFileInput
, чтобы открыть поток ввода для чтения. поскольку метод write(int)
записывает один байт в файл, вы можете безопасно использовать метод read()
для чтения каждого байта и присвоения его переменной.
НО , в ваших циклах есть большая проблема - вы изменяете i внутри цикла, не связанные с индексированием:
i=mAppoitments[i].getMonth(); // now i might be assigned with 12
fos.write( i ); // you write 12
i=mAppoitments[i].getDay(); // now you look for mAppoitments[12].getDay()
....
Используйте другую переменную, чтобы записать это значение в файл, не изменяйте i внутри цикла. Например:
for(i=0;i<cDates.getMaxAmount();i++)
{
int j;
j=mAppoitments[i].getMonth();
fos.write( j );
j=mAppoitments[i].getDay();
fos.write( j );
j=mAppoitments[i].getYear()-1900;
fos.write( j );
}