在(更新 ModifiedTime)WinRT 中“触摸”文件的优雅/高性能方式?
我有一些代码需要删除超过 30 天的文件。这很好用,但在某些情况下,我需要更新文件上的时间以重置 30 天窗口,并防止删除。在 basicProperties 列表中,ModifiedTime 是只读的,所以我需要找到另一种方法来更新它...
方法一:重命名两次
// Ugly, and may have side-effects depending on what's using the file
// Sometimes gives access denied...
public static async Task TouchFileAsync(this StorageFile file)
{
var name = file.Name;
await file.RenameAsync("~" + name).AsTask().ContinueWith(
async (task) => { await file.RenameAsync(name); }
);
}
方法二:修改文件属性
// Sometimes works, but currently throwing an ArgumentException for
// me, and I have no idea why. Also tried many other properties:
// http://msdn.microsoft.com/en-us/library/windows/desktop/bb760658(v=vs.85).aspx
public static async Task TouchFileAsync(this StorageFile file)
{
var prop = new KeyValuePair<string, object>("System.Comment", DateTime.Now.Ticks.ToString());
await file.Properties.SavePropertiesAsync(new[] { prop });
}
方法 3:通过 P/Invoke 使用 Win32 API?
- 不确定这是否适用于 ARM 设备?
- 通过认证?
- 表现出色?
- 有没有最好的方法来做到这一点?代码示例?
有人有其他想法吗?我有点卡住了:-)
非常感谢,乔恩