Не удается записать файл во внутреннее хранилище Android

#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;
    }
}