題 拖放和復制粘貼對FAT32文件表的影響


我有一個數字音樂轉換器,模擬我的汽車收音機的CD換碟機。它可以從SD卡讀取mp3文件,但是“按文件複製到SD卡的時間”確定播放順序。

我做了以下觀察:

  • 一次復制多個文件(僅通過拖放測試)會導致幾乎隨機的播放順序
  • 通過拖放操作按文件複製文件會導致一個隨機播放順序,當一次復制所有文件時,(未驗證)似乎等於播放順序。
  • 使用剪貼板快捷方式按文件複製文件會導致正確的播放順序。

我還寫了一個簡單的C#程序,按字母順序覆蓋每個文件的創建/訪問/最後寫入時間屬性,但它對播放順序沒有影響。我改變它來逐個複制每個文件,這也沒有幫助。使用名為“Mp3DirSorter”的程序也沒有幫助。

我目前的猜測是設備從FAT32文件表中讀取文件。 如果這是正確的,我想知道:

  • 為什麼拖放和復制粘貼引導會產生不同的結果?
  • 如何在Fat File Table中重新排列文件? (可能重複的問題)

另外:值得注意的是,SD卡可能沒有在每次測試之間進行格式化。


2
2018-04-03 21:10


起源




答案:


您的播放器似乎按照目錄中的文件順序選擇曲目。此順序取決於許多因素,並且由於刪除的文件會在目錄中留下空洞,這些空洞稍後會被新添加的文件填充,因此幾乎無法預測。

所以,如果您需要保證訂單:

  1. 格式化SD卡以清除所有目錄條目
  2. 按要求的順序逐個複製文件

拖放操作與實現有關。在我的Windows XP機器上,它似乎取決於您在拖動時單擊的文件:如果我選擇10個名為的文件 file0 ... file9 並在點擊時拖動它們 file5,結果順序將是 file5 ... file9  file0 ... file4。因此,如果您想使用拖放,請嘗試在拖動時單擊第一個文件。

提示:窗戶 dir 命令按順序列出文件在目錄中。因此,如果您的音樂按照與之相同的順序播放歌曲 dir 輸出,這個答案是相關的;否則其他東西在選擇歌曲的方式中起作用。


3
2018-04-03 21:30



賓果......這個玩家愚蠢地依賴於名字出現在目錄中的順序,沒有人應該關心。他們這樣做是因為他們需要花費一些工作來按字母順序對名稱進行排序,這樣他們就可以輕鬆地將它們按照目錄中列出的順序播放。 - psusi
事實上,我也發現這篇文章非常有趣,因為它幾乎解釋了發生了什麼: codeproject.com/Articles/95721/FAT-Sorter - Xaser