Android Внутреннее хранилище: файл пуст, как только он был прочитан - PullRequest
0 голосов
/ 29 марта 2020

Итак, я пытаюсь сохранить HashMap как файл JSON во внутреннем хранилище приложения. Это хорошо работает, как я вижу в проводнике файлов устройства, все сохраняется правильно. Когда я затем перезагружаю приложение и читаю из файла, оно также работает, НО после этого одноразового чтения файл пуст. Полностью пустой даже не некоторые "{}" при сохранении пустого JSON объекта.

public void writeNetworks(FileOutputStream fos) {
    Log.d(TAG, "writeNetworks");

    Gson gson = new GsonBuilder().create();
    String json = gson.toJson(networks);

    Log.d(TAG, json);

    PrintWriter out = new PrintWriter(new OutputStreamWriter(fos));
    out.println(json);
    out.flush();
    out.close();
}

public void readNetworks(FileInputStream fis) {
    Log.d(TAG, "readNetworks");

    try {
        BufferedReader in = new BufferedReader(new InputStreamReader(fis));
        StringBuilder json = new StringBuilder();
        String line;
        while((line = in.readLine()) != null ) {
            json.append(line);
        }
        in.close();

        Log.d(TAG, json.toString());

        Gson gson = new GsonBuilder().create();
        Type typeOfHashMap = new TypeToken<Map<String, WrcUser>>() { }.getType();
        networks = gson.fromJson(json.toString(), typeOfHashMap);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Есть идеи?

1 Ответ

0 голосов
/ 29 марта 2020

Я действительно нашел способ, чтобы это работало ... Сейчас я звоню writeNetowrks(..) в методе onStop() моей деятельности. Кажется, что до сих пор работает согласованно.

...