【问题标题】:Which property has to be set to change file copy time?必须设置哪个属性才能更改文件复制时间?
【发布时间】:2014-04-16 10:08:41
【问题描述】:

我有一个便携式音频播放器,其中列出了目录和文件(SD 卡 FAT32 存储),按照手册 in the order they are copied。这确实是它的作用:一次手动复制一个文件时,它将按照复制的顺序显示这些文件。现在我已经使用 Windows Explorer 和 Unison 的组合复制了数百个文件,因此所有内容都以基本上随机的顺序显示。我希望所有内容都按字母顺序列出,所以我编写了我能想到的最简单的 C# 代码,它按字母顺序列出目录,其中的文件同上,并使用 Directory.SetLastWriteTimeFile.SetLastWriteTime 设置每个目录的时间,并且该时间在每次迭代中增加 2 秒。

使用GetLastWriteTime 重新读取所有内容确认时间戳已更新,但播放器不会执行预期的操作。它确实正确排序了目录,以及一些文件(可能是那些已经按字母顺序复制的文件)之前),但不是全部。使用SetCreationTime 再次尝试了所有操作,但结果相同。

那么必须设置哪个文件属性才能使其正常工作?或者它是 FAT 驱动器本身的某些属性?以及使用哪些功能? (最终纯 C api 也可以)

【问题讨论】:

  • 不是文件复制时间。可能是导致问题的 FAT32 文件表中的条目顺序。你必须想办法改变它。老实说,您最好删除所有内容.. 并编写一个小型 C# 应用程序,按照您想要的顺序复制文件.. 这是一个 15 分钟的工作。
  • @ta.speot.is 你可以把它变成一个答案,我会接受它,它引导我进行适当的互联网搜索,揭示各种工具和实用程序来处理这个问题跨度>

标签: c# last-modified fat32


【解决方案1】:

fatsort 声称这样做,因此您可以研究其source code 以了解如何重新排序文件。

请注意,您要做的是一个相当复杂的过程,因为它依赖于 FAT 的内部结构,但它是可行的。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-05-06
  • 2019-08-29
  • 2013-04-14
  • 1970-01-01
  • 1970-01-01
  • 2021-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多