我想存储应用程序输出的数据。我想将数据存储到 USB 闪存驱动器中。
我的应用程序每 10 秒将生成大约 100 字节大小的数据。这些数据将存储在文件中。文件将按日分开。
我的问题是,使用 USB 闪存盘作为数据存储时我应该注意什么。我计划使用该存储设备大约一年。
我担心 Windows7 操作系统有时会卸载 USB 闪存盘。我应该采取什么措施来防止长期使用时出现卸载和其他相关问题?
答案1
我从未见过 Windows 7 卸载闪存驱动器,除非我关闭 Windows 或拔下闪存驱动器。您可能想到了主轴硬盘内置的省电功能,该功能会在一段时间不活动后降低这些驱动器的转速并使其进入睡眠状态。
如果您在一年内每 10 秒仅写入 100B,则媒体的寿命(以读/写周期为单位)将不是问题,但您可能需要重新考虑您的存储方案,因为有几个性能原因,我将在下面详细讨论。
文件系统的块大小将决定分配的最小文件大小,并且几乎肯定会大于 100B。例如,如果块大小为 4KB,则将以 4KB 块为单位分配空间。100B 文件将占用 4KB 空间,而 4097KB 文件(4KB+1B)将分配 8KB(2 个块)。也就是说,大多数闪存驱动器仍应有足够的容量来存储您预期的 1 年数据。
如果您每天在单个目录中生成数十或数百个(或在您的情况下为 8640 个)具有相似名称的文件,则需要确保注册表中禁用 8.3 文件名支持(或确保您的文件名不超过 8 个字符,扩展名不超过 3 个字符)。如果您有一堆以单词开头的文件文件名并结束于。TXT例如,您最终会得到以下 8.3 文件名:
FILENA~1.TXT
FILENA~2.TXT
FILENA~3.TXT
...
FILEN~10.TXT
FILEN~11.TXT
...
FILE~100.TXT
...等等。
计算这些文件名的成本会随着文件数量的增加而呈指数增加,甚至获取目录列表的速度也会大大减慢。
最后一个因素是闪存随机读写操作的成本。如果您曾经将大量小文件复制到闪存驱动器或从闪存驱动器复制,您就会知道许多 USB 闪存驱动器的随机读写性能非常糟糕。即使总文件大小相同,一年后从闪存驱动器复制数千个小文件所需的时间可能比复制数十或数百个文件所需的时间长几个数量级。这可能意味着复制所有数据所需的时间是几小时还是几秒。
出于这些原因,请考虑每小时或每天创建一个新文件,在目录结构中创建额外的级别(例如每小时),或将数据存储在数据库中。