【问题标题】:Persist Map <Integer, Integer> in android在android中持久化地图<Integer,Integer>
【发布时间】:2021-07-20 17:31:52
【问题描述】:

我这个周末尝试了不同的方法来在 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 语句内。

【问题讨论】:

    标签: java android serialization fileoutputstream objectoutputstream


    【解决方案1】:

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

    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
    

    【讨论】:

    • 再次感谢您的意见。不幸的是,我还没有使用日志记录,尽管这当然比通过资源管理器中的文件搜索来搜索文件要容易得多。序列化和反序列化现在都可以工作了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多