我有一个数字音乐转换器,可以模拟汽车收音机的 CD 转换器。它可以从 SD 卡读取 mp3 文件,但播放顺序是“根据文件复制到 SD 卡的时间”决定的。
我做了以下观察:
- 一次复制多个文件(仅通过拖放测试)会导致播放顺序几乎随机
- 通过拖放方式复制文件会导致随机播放顺序(未经验证)似乎与一次复制所有文件时的播放顺序相同。
- 使用剪贴板快捷方式逐个复制文件可以获得正确的播放顺序。
我还编写了一个简单的 C# 程序,按字母顺序覆盖每个文件的创建/访问/上次写入时间属性,但这对播放顺序没有影响。我将其改为逐个复制每个文件,但这也无济于事。使用名为“Mp3DirSorter”的程序也无济于事。
我目前的猜测是该设备从 FAT32 文件表读取文件。如果这是正确的,我想知道:
- 为什么拖放和复制粘贴会导致不同的结果?
- 如何在 Fat 文件表中重新排列文件?(可能重复的问题)
另外:值得注意的是,每次测试之间可能没有格式化 SD 卡。
答案1
您的播放器似乎按照文件在目录中出现的顺序来选择曲目。此顺序取决于许多因素,并且由于删除的文件会在目录中留下空白,而这些空白随后会被新添加的文件填充,因此几乎无法预测。
因此,如果您需要保证顺序:
- 格式化 SD 卡以清除所有目录条目
- 按要求的顺序逐个复制文件
拖放操作依赖于实现。在我的 Windows XP 机器上,它似乎取决于拖动时单击的文件:如果我选择 10 个名为file0
...的文件file9
并在单击 时拖动它们file5
,则结果顺序将是file5
... file9
file0
... file4
。因此,如果您想使用拖放,请尝试在拖动时单击第一个文件。
提示:Windowsdir
命令按文件在目录中出现的顺序列出文件。因此,如果您的音乐播放歌曲的顺序与dir
输出的顺序相同,则此答案是相关的;否则,其他因素会影响它选择歌曲的方式。