在 android 中保留映射 <Integer, Integer>

Persist Map <Integer, Integer> in android

本周末我尝试使用不同的方法在 android 中存储地图 的数据。不幸的是,这并没有达到预期效果。

对应代码段:

                    if (getCounter() > 19){

                    try
                    {
                        File folder = new File(this.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), "hashmap");

                        if (!folder.exists())
                        {
                            folder.mkdirs();
                        }

                        File ganiuSave = new File(folder, "mapDEGR");
                        OutputStream mapSave = new FileOutputStream(ganiuSave);

                        ObjectOutputStream oos = new ObjectOutputStream(mapSave);
                        oos.writeObject(mapDEGR);
                        oos.close();
                        mapSave.close();
                    }
                    catch(IOException ioe)
                    {
                        ioe.printStackTrace();
                    }}

我在智能手机上找不到相应的文件。该应用程序之前使用 android 调试桥传输到智能手机。该地图包含值,因此这不应该成为不进行保存的原因。所有 类 涉及实现 Serializable 并且没有抛出异常。

有人有什么想法吗?

如果您需要更多周边代码来评估问题,请告诉我。代码段位于 switch 语句内。

要找到您的文件,您可以像这样记录文件的绝对位置:

Log.v(LOG_TAG, "File Location: " + ganiuSave.getAbsolutePath());

获得确切位置后,您可以使用 ADB 或 Android Studio 的“设备文件资源管理器”访问该文件。当我尝试使用您的代码时,我得到:

在模拟器上 api 17;

/mnt/sdcard/Android/data/com.example.yourapp/files/Download/hashmap/mapDEGR

在物理设备上 api 24;

/storage/emulated/0/Android/data/com.example.yourapp/files/Download/hashmap/mapDEGR