【问题标题】:uwp unique identifier for a StorageFile on FileSystemuwp 文件系统上 StorageFile 的唯一标识符
【发布时间】:2018-09-26 07:16:25
【问题描述】:

我打算使用 KnownFolders.VideosLibraryFutureAccessList 跟踪 FileSystem 视频文件(这可以让我访问视频库之外的项目)。

我想保存一些关于我的应用程序中使用的每个 StorageFile 对象的数据。因此,首先我想到使用SavePropertiesAsync 方法将元数据保存在存储文件的属性上,这样即使文件移动到系统中的其他位置,或者如果它被删除,futureaccesslist 也会自动将其删除本身。但我在SavePropertiesAsync() 方法上遇到了 ACCESS DENIED 异常。是的,我在我的应用程序中使用了VideoLibrary 功能,我正在尝试在KnownFolder.VideoLibrary 中的文件上使用此方法。

现在 saveProperties 不起作用,我正在考虑在我的应用程序中创建一个数据库并使用 FolderRelativeIdStorageFile 跟踪数据并针对该属性跟踪数据,因为它甚至对于每个文件都是唯一的同名。在这种情况下,唯一的限制是,当文件在文件系统中移动时,与文件夹相关的 id 会发生变化,这无法通知我的应用程序(除非它正在运行,所以我可以使用StorageLibraryTracker api)。另外,如果文件被删除,我也不知道。

所以总结一下 StorageFile 对象上的属性是什么在文件系统中。

【问题讨论】:

    标签: c# properties uwp storagefile video-library


    【解决方案1】:

    但我在 savepropertiesasync() 方法上遇到 ACCESS DENIED 异常。

    如果您启用了VideoLibrary 功能,则此方法不应抛出此异常。检查你的代码 sn -p 是否正确,例如:

    StorageFolder videofolder = KnownFolders.VideosLibrary;
    StorageFile onefile = await videofolder.GetFileAsync("xxx.mp3"); 
    VideoProperties properties = await onefile.Properties.GetVideoPropertiesAsync();
    properties.Subtitle = "track01";
    await properties.SavePropertiesAsync();
    

    如果启用了正确的代码 sn-p 和功能,您仍然会收到 Access Denied 异常,原因应该是特殊文件设置为只读属性。请通过右键单击该文件并选择Properties 进行检查,请参阅Attributes

    除非它正在运行,否则我可能会使用 StorageLibraryTracker api

    如您所知,您可以使用StorageLibraryChange 相关 API 来跟踪文件更改。跟踪运行中的应用程序应满足您的要求时的更改。但您甚至可以知道应用程序未通过后台任务运行时的更改。您可以注册一个StorageLibraryChangeTrackerTrigger,当发生更改时它会触发一个后台任务。

    【讨论】:

    • 您通过查找文件名来获取文件,而在我的场景中,我使用“QueryOptionsResult.GetFilesAsync()”获取文件,这可能是我的错误的原因吗? @Sunteen Wu - MSFT
    • @touseef,不,这只是获取StorageFile 对象的不同方式,不会导致异常。请检查文件是否是我在回复中提到的只读文件。
    • 是的,我刚刚检查过了,我可以确认抛出异常的文件不是只读的。它是我图书馆中的第一个文件,
    • 我什至尝试使用文件选择器仍然得到:System.UnauthorizedAccessException:'访问被拒绝。 (来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))'
    • @touseef,在这种情况下,请检查该文件夹是否为只读。如果您仍有问题,请提供minimal reproducible example,我们将在我们这边进行测试。
    猜你喜欢
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    相关资源
    最近更新 更多