0

我在想如果我存储视频或电影并打开该框,该视频将存储在我的 RAM 中,否则它只是从 ROM 加载。我有点困惑:谁能给我解释一下?

4

2 回答 2

3

我认为您误解了数据库的概念。

  • 任何数据库解决方案都是只存储纯粹的信息组织数据。不要存储大文件,例如媒体、文档或图像。

  • 相反,存储不需要组织,所有文件都可以存在一个文件夹中。

因此,您使用的任何数据库解决方案始终存储数据类型。在这种情况下,您可以拥有一个数据模型,这也是使用数据库的必要条件。

@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();

希望这可以消除您的疑问。

于 2020-09-23T04:45:30.110 回答
1

在本地文件存储中复制/保存您的视频/媒体文件,并将文件路径保存在 Hive Box 中。

每当您需要从配置单元获取路径时,然后使用该路径从本地存储中获取文件。

于 2020-09-23T04:18:19.877 回答