Так что это не совсем то, что вы просили, но именно так у меня это работает для Strings, и вам может быть полезно посмотреть.(Конечно, вы можете пометить примитивы и добавить их в строку, если хотите использовать этот код.)
Запись
FileOutputStream fos = context.openFileOutput("savedstate.txt", 0);
for (int i = 0; i < out.length(); ++i)
fos.write((byte)out.charAt(i));
Чтение
StringBuilder inb = new StringBuilder();
FileInputStream fis = this.mContext.openFileInput("savedstate.txt");
int ch;
while((ch = fis.read()) != -1)
inb.append((char)ch);
Обновление
Одна мысль, которая приходит на ум, заключается в том, что вы можете не захотеть доверять, используя объект File с полным путем, введенным рукой, к файлу.Вместо этого просто используйте FileInputStream с объектом контекста и относительным путем, как в моем коде, а затем посмотрите, получите ли вы строку String некоторой длины или что-то в этом роде, или исключение, что файл не существует.
Если вам действительно интересно, где создается файл, или вы хотите увидеть его своими глазами, я думаю, вы можете просмотреть его на своем телефоне через файловый менеджер в DDMS.
И последнее.Я бы предложил переместить блок try / catch за пределы цикла записи.Поскольку повторяется идентичная задача, нет необходимости в дополнительном использовании этого подхода, хотя, как правило, рекомендуется минимизировать размер блоков try / catch.
Ладно, еще одна вещь, есливы хотите использовать объект File с полным путем, возможно, вы захотите, чтобы путь был следующим:
File file = new File("/data/data/com.v1nsai.mibudget/balance.txt");
Начальная косая черта может иметь все значение.