#java #android #fileinputstream
#java #Android #fileinputstream
Вопрос:
Я пытаюсь сохранить историю пользователей во внутреннее хранилище, которое, похоже, работает (ошибок нет) :
Gson gson = new Gson();
String json = gson.toJson(userHistory);
historyFile = new File(context.getFilesDir() File.separator "MyApp" File.separator "UserHistory.json");
FileOutputStream fileOutputStream = new FileOutputStream(historyFile);
fileOutputStream.write(json.getBytes());
fileOutputStream.flush();
fileOutputStream.close();
Но когда я пытаюсь открыть его, я получаю FileNotFoundException
:
InputStream inputStream = assets.open(historyFile.getAbsolutePath());
Что я делаю не так?
Комментарии:
1. Вы должны использовать не ресурсы, а FileInputStream.
Ответ №1:
Основываясь на комментарии, мне удалось найти ответ, я использую :
String userHistoryJson = fileToString(historyFile.getAbsolutePath());
С помощью функции, приведенной ниже :
public String fileToString(String fileName) {
try {
FileInputStream fis = new FileInputStream (fileName); // 2nd line
StringBuffer fileContent = new StringBuffer("");
byte[] buffer = new byte[1024];
int n;
while ((n = fis.read(buffer)) != -1)
{
fileContent.append(new String(buffer, 0, n));
}
String json = new String(fileContent);
return json;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}