我应该实现一个数据库或让操作系统管理文件(媒体库应用程序)

本文关键字:操作 媒体库 应用程序 系统管理文件 一个 实现 我应该 数据库 | 更新日期: 2023-09-27 18:12:25

我正在编写一个媒体库应用程序。(如iTunes)。用户可以拥有数千个媒体文件。(有些文件可能像音乐一样小,有些文件可能像电影一样大)用户应该足够快地完成搜索、添加、删除、更改信息等操作。我正试图决定如何存储&检索这些文件。

一种方式:像itunes我可以为图书馆创建一个文件夹,在那个文件夹中我可以为每个艺术家创建另一个文件夹,在每个艺术家文件夹中我可以为每个专辑创建一个文件夹,最后在专辑文件夹中我可以存储音乐文件。我将创建另一个文件来存储有关音乐文件的信息(专辑艺术,歌词等),这种方式很容易实现和管理。它也会很快。

第二种方法:我可以将所有内容存储在一个文件中。我可以使用数据库来存储所有内容,也可以使用其他方法,如BinarySerialization和创建自己的文件类型。这种文件类型可以有媒体文件本身和它的信息在其中。我不知道这是否可能。我不知道它是否足够快,以提取一个文件,改变它的东西,并将其存储回来。

我应该用itunes的方式还是你能推荐另一种方式呢

我应该实现一个数据库或让操作系统管理文件(媒体库应用程序)

使用数据库存储有关文件的元数据,以便您可以按艺术家,专辑,类型,日期等进行索引。但是将二进制数据存储在文件系统中。

数据库包含对文件系统中文件的引用。

我自己的多区域音乐播放器也在数据库中存储文件的MD5散列,以便它可以轻松地找到重复。然后,数据库中的每个条目都有一个磁盘位置列表,而不是只有一个,如果存在磁盘位置,它将播放。

你应该用iTunes的方式。这为用户在不使用应用程序的情况下复制、移动和删除歌曲提供了更大的灵活性。

管理和索引一个大文件可能会很麻烦。如果应用程序可以像你说的那样管理数千首歌曲,那么文件就会很快变大。

我会保留一个数据库来存储元数据,如歌曲标题,艺术家和位置在磁盘上。不要用它来组织实际内容。反正iTunes就是这么做的。这样,你就可以快速加载歌曲列表,而不必实际筛选歌曲的媒体内容。