database - 可以在 Flutter Store BigData 中配置 Hive(一些 GB 文件)
问题描述
我在想如果我存储视频或电影并打开该框,该视频将存储在我的 RAM 中,否则它只是从 ROM 加载。我有点困惑:谁能给我解释一下?
解决方案
我认为您误解了数据库的概念。
任何数据库解决方案都是只存储纯粹的信息组织数据。不要存储大文件,例如媒体、文档或图像。
相反,存储不需要组织,所有文件都可以存在一个文件夹中。
因此,您使用的任何数据库解决方案始终存储数据类型。在这种情况下,您可以拥有一个数据模型,这也是使用数据库的必要条件。
@HiveType(typeId: 0)
class Movie extends HiveObject {
@HiveField(0)
String name;
@HiveField(1)
int path;
}
由于 Hive 支持 Dart 对象,因此您不必将数据转换为 JSON 或任何此类对象。
因此,当您从 Storag 获取文件时,您可以使用path_provider
或从文件本身获取路径,然后创建一个对象
File file = await // get the movie file using any means
final path = file.path
var box = await Hive.openBox('Movies');
var m = Movie()
..name = 'Batman Begins'
..path = path ;
box.add(m);
m.save();
希望这可以消除您的疑问。
推荐阅读
- c++ - 传递给放置 new 的指针是否是指向其对象表示的非 UB 指针?
- react-native - React Native 深度链接 - 损坏?
- javascript - 将 HTML 动态添加到 Pug(Jade)模板的正确方法是什么?
- html - 链接到另一个 html 文件的 HTML href 卡在旋转的圆圈上
- android - 没有收到 ACTION_PACKAGE_REMOVED 广播 - Android 10/设置
- java - (Kotlin) 如何将 hashmap 输出保存到文件
- postgresql - Kubernetes - Postgres - 创建表
- php - 将特定的子数组传递到另一个页面 php
- java - 确保该方法返回一个列表
而不仅仅是一个列表。在java中 - android - 免费 VoIP 服务提供商的名称和 SIP 和应用程序到应用程序的呼叫是否相同?