android中如何保存数据结构?

2024-01-24

我想存储这样的结构中的一些数据:

class Project {
    ChildA a;
    ChildB b;
}

class ChildA {
    ChildC c;
    ...
}
...

我创建了如下数据:

Projet x = new Project();
x.a = new ChildA();
x.a.c = new ChildC();

...我想将其保存到设备 SD 卡上的外部文件中,以便其他应用程序可以读取它(并且用户可以打开/复制它)。

我认为我应该使用 DOM 解析器,因为我的数据结构不是很大,但我没有找到教程或类似的东西。有没有更好的方法来存储这些信息?

如果没有,有没有关于如何在 android 中使用解析器的说明?


如果您希望其他 Android 应用程序可以访问您的数据,那么推荐的方法是编写内容提供商 http://developer.android.com/guide/topics/providers/content-providers.html#creating。另一方面,如果您希望数据在非 Android 应用程序中使用,则需要“导出”它。这个你必须自己编码。

我现在可以想到三个选择:

  1. 创建 XML 文件
    不幸的是,Android 不包含方便创建 XML 所需的所有内容 文件。最值得注意的是,javax.xml.transform不可用,正在添加平台 不建议上课。这意味着你必须自己写出来 “变换”类
  2. 创建 JSON 文件
    Android API 很好地支持 JSON。看here http://developer.android.com/reference/org/json/package-summary.html and here http://www.json.org
  3. 创建Java序列化文件
    只要你的对象实现了“Serialized”接口,那么它们就可以很容易地被 写出到文件。我从来不需要自己这样做,但它应该是 简单明了,并且应该可以在网上找到示例。 (举个例子,谷歌来了 与这个迷你教程 http://www.devx.com/Java/Article/9931/1954)

当您私密存储文件时,请考虑使用打开文件输入 http://developer.android.com/reference/android/content/Context.html#openFileInput(java.lang.String) and 打开文件输出 http://developer.android.com/reference/android/content/Context.html#openFileOutput%28java.lang.String%2C%20int%29。如果你想明确地存储在SD卡上,你应该使用获取外部存储目录() http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()检索根文件夹。

我个人的建议是使用 JSON 文件。这是一种简单的格式,适用于大多数情况,并且广泛使用。除此之外,反序列化非常简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android中如何保存数据结构? 的相关文章

  • 使用 Boost::Spirit 解析 time_period 表达式

    我需要使用 Boost Spirit 解析以下 EBNF 表达式 period date part time part date part time part time part hours minutes seconds date par
  • 计数物体和更好的填充孔的方法

    我是 OpenCV 新手 正在尝试计算物体的数量在图像中 我在使用 MATLAB 图像处理工具箱之前已经完成了此操作 并在 OpenCV Android 中也采用了相同的方法 第一步是将图像转换为灰度 然后对其进行阈值计算 然后计算斑点的数
  • CollapsingToolBarLayout - 状态栏稀松布颜色不改变

    几天前我更新了我的 android studio 并开始使用 CoordinatorLayout 和 CollapsingToolbarLayout 只是尝试一些东西 工具栏稀松布颜色似乎覆盖了状态栏初始颜色和状态栏稀松布颜色 从 xml
  • XML 解析:格式良好的检查:未声明的实体

    我正在使用 SSMS 2008 但收到以下错误 你知道这意味着什么吗 Msg 9448 Level 16 State 1 Line 4 XML parsing line 1 character 89 well formed check un
  • 是否必须删除 Intent extra?

    这可能是一个愚蠢的问题 但是是否有一条规则规定消费活动必须显式删除 Intent 额外内容 或者只有在回收 Intent 对象时才如此 换句话说 如果我总是通过执行以下操作来链接到下一个活动 Intent i new Intent MyCu
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • XSLT-选择以下项目直到特定标记

    假设我有这个 XML 文件
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 是否有 ADB 命令来检查媒体是否正在播放

    我想使用 ADB 命令检查根植于终端的外部设备中是否正在播放音频 视频 我无法找到任何 ADB 命令 如果有 我尝试过 adb shell dumpsys media player 我想要一个命令来指定视频是否正在运行 您可以使用以下命令查
  • 原色(有时)变得透明

    我正在使用最新的 SDK 版本 API 21 和支持库 21 0 2 进行开发 并且在尝试实施新的材料设计指南时遇到了麻烦 材料设计说我需要有我的primary color and my accent color并将它们应用到我的应用程序上
  • 尝试在 ubuntu 中编译 android 内核时出错

    我正在尝试从源代码编译 Android 内核 并且我已经下载了所有正确的软件包来执行此操作 但由于某种原因我收到此错误 arm linux androideabi gcc error unrecognized command line op
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • 错误:在根项目“projectName”中找不到项目“app”

    我有一个在 Eclipse 中开发的旧应用程序 现在尝试将其迁移到 Android Studio 我更新了库并遵循了基本步骤 现在 我收到此错误 Error Project app not found in root project pro
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • Android向menuItem添加子菜单,addSubMenu()在哪里?

    我想根据我的参数以编程方式将 OptionsMenu 内的子菜单添加到 menuItem 中 我检查了android sdk中的 MenuItem 没有addSubMenu 方法 尽管你可以找到 hasSubMenu 和 getSubMen
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 一次显示两条Toast消息?

    我希望在一个位置显示一条 Toast 消息 并在另一位置同时显示另一条 Toast 消息 多个 Toast 消息似乎总是按顺序排队和显示 是否可以同时显示两条消息 是否有一种解决方法至少可以提供这种外观并且不涉及扰乱活动布局 Edit 看来
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 将 Intent 包装在 LabeledIntent 中以用于显示目的

    要求 我的应用程序中有一个 共享 按钮 我需要通过 Facebook 分享 我需要选择是否安装原生 Facebook 应用程序 我们的决定是 如果未安装该应用程序 则将用户发送到 facebook com 进行分享 当前状态 我可以检测何时

随机推荐

  • 工具提示控件如何通过新属性增强表单上的所有控件?

    在回答另一个问题时 我开始想知道如何向表单中的所有控件添加新属性 就像工具提示控件那样 例如 我可以使用它将 IsDirty 标志添加到所有文本框 只需将组件添加到表单中 它就会为每个文本框处理这个问题 将工具提示控件添加到表单时 所有控件
  • 浏览器关闭时如何唤醒服务人员

    我正在玩服务人员的东西 我已经做了它以及清单 json 我想在以下场景后触发服务工作人员启动 添加了推送集成并从服务器端发送推送通知 在客户端收到它 但前提是我在我的申请页面中 以下是我想要尝试启动 Service Worker 的步骤 我
  • 如何使用 qmake 处理两个同名的源文件?

    我的 Qt 项目有两个同名但位于不同文件夹中的源文件 专业文件是 SOURCES A Test cpp SOURCES B Test cpp 它可以通过 Qt Visual Studio 插件生成 Visual Studio 解决方案文件
  • github api 比较提交,响应状态存在分歧

    在配置jenkins时 我想检测feature分支是否存在合并冲突 所以我使用github api v3在2上进行测试故意的冲突的分支 将branch1合并到master后 我比较了branch2 b2 如下所示 curl i https
  • WS-Security php 中 PasswordDigest 的工作算法

    我一直根据航空公司供应商提供的公式创建哈希密码 我在这个网站上搜索过 我从下面的链接中得到了 C 的解决方案 但我想要 PHP 的解决方案 WS Security 中 PasswordDigest 的工作算法 https stackover
  • 了解 Objective-C 中强指针和弱指针的实际应用

    我刚刚阅读了已接受的优秀答案this https stackoverflow com questions 9262535 explanation of strong and weak storage in ios5这个问题澄清了 Objec
  • JavaScript 输入数字

    如何使用 window prompt 从用户处获取 2 个数字并将它们相加而不连接 我的想法是 var temp window prompt Number1 var temp2 window prompt Number2 var answe
  • 初始化列表和运算符的 RHS

    我不明白为什么初始化列表不能在运算符的 RHS 上使用 考虑 class foo struct bar template
  • javafx拉伸图像以填充按钮?

    我正在用 Java JavaFX 编写一个 星际迷航 游戏 我的想法是主游戏屏幕是一个 10x10 的按钮网格面板 所有游戏部件 企业 克林贡 行星等 都将在按钮中显示为图标 这样 您可以单击一个空间对象来选择它 扭曲到它 射击它等等 当然
  • HttpWebRequest 与 HttpClient

    我有一段代码可以使用HttpWeb请求 and HttpWeb响应但我想将其转换为使用Http客户端 and Http响应消息 这是有效的代码块 HttpWebRequest request HttpWebRequest HttpWebRe
  • 为 OS X 构建虚拟相机

    我需要在 Skype 等程序中获取合成生成的视频流 音频部分很简单 有一个项目叫音花 https code google com p soundflower 这是一个适配器 它在一侧呈现虚拟音频目标设备 在另一侧呈现视频源 我正在为 OSX
  • 使用 Qt 显示 ubuntu (linux) 通知

    我正在使用 Qt 中的 Phonon 多媒体框架 它会弹出一条消息 就像改变音量时弹出的音量通知消息 因为我的音频设备尚未完全配置 是否可以从 Qt 启动我自己的通知 请看上图 非常感谢 AFAIK 使用 libnotify 是可行的方法
  • 如何获取最接近的元素id属性

    我试图找到最接近的具有 id 属性的元素并获取id 该元素可以是 p p div 或其他元素 我努力了 element test closest div id attr id 但只有当元素是 a 时它才会获取 iddiv 我想变得更加普遍
  • 为什么不读/写其内容的结构体的方法仍然会导致竞争情况?

    From 戴夫 切尼博客 http dave cheney net 2015 11 18 wednesday pop quiz spot the race 以下代码显然会导致竞争情况 只需更改即可解决func RPC version int
  • NTP 对于分布式时间同步有多好?

    NTP 用于保持一组服务器时间同步的准确度如何 我正在编写一项服务 需要一组服务器 一些充当客户端 一些充当服务器 同步到二级粒度 我想知道 NTP 是否是最好使用的东西 或者是否有更好的东西 我应该在其中一个上运行 ntp 服务器 并让其
  • 如何从多个接口组成一个 WCF 合约?

    我有多个接口 所有这些都应该由单个合约接口继承和公开 interface A void X interface B void Y interface C A B this is the public contract 这怎么可能 我无法将
  • 如何将 Visual Studio .NET 2008 解决方案转换为 Visual Studio .NET 2005?

    假设解决方案仅包含类 并且这些类全部按照 NET 2 0 规范编写 如果要在 Visual Studio 2008 中打开 转换和保存该解决方案 是否可以稍后在 Visual Studio 2005 中重新打开该解决方案 并对 SLN 文件
  • 根据多年每日天气数据计算每日平均值?

    我有从 1984 年到 2014 年 31 年的每日数据 我想计算变量的 31 年的每日平均值 date Min daily Max daily Rain daily 01 01 1984 18 8 3 6 0 02 01 1984 20
  • 将 DataGridView 内容复制到剪贴板

    我想复制 DataGridView 的内容并将其粘贴到 Excel 中 我试过 myDataGrid SelectAll DataObject dataObj myDataGrid GetClipboardContent Clipboard
  • android中如何保存数据结构?

    我想存储这样的结构中的一些数据 class Project ChildA a ChildB b class ChildA ChildC c 我创建了如下数据 Projet x new Project x a new ChildA x a c