【问题标题】:uwp StorageFile adding a custom propertyuwp StorageFile 添加自定义属性
【发布时间】:2018-09-22 11:45:05
【问题描述】:

在我的 uwp 应用程序中,我使用 KnownFolders.VideoLibrary 获取视频文件。我能够 PreFetch 文件的 videoProperties 以及其他一些属性。现在我实际上想用一些字符串数据标记视频文件,并保存这些数据,以便以后检查。

例如,我想将它们添加到 喜欢的视频,那么我可以在 storagefile 上添加一个自定义属性,每次运行应用程序时都会保存该属性。这将让我检查是否喜欢特定的存储文件。

目前我知道我可以编辑和保存 videoproperties,如下所示。

var vp = await file.Properties.GetVideoPropertiesAsync();
vp.Title="Liked";
vp.Properties.SavePropertiesAsync();

但问题是这些属性默认不会为空。我想要一个所有 StorageFiles 默认为空的属性,以便我可以检查它们是否为空或标记为 Liked

我还打算保存 token,我将从 FutureAccessList 获得该文件。我知道我可以创建一个数据库表并在那里完成所有这些操作,但这会带来其他复杂性,因此我想保持简单。

【问题讨论】:

    标签: c# xaml uwp storagefile file-properties


    【解决方案1】:

    视频文件中有很多properties。并且官方文档并没有指定它们默认为空。但是,video 属性有Keywords list 属性,您可以像follow 一样将Liked 关键字添加到列表中。

    VideoProperties videoProperties = await file.Properties.GetVideoPropertiesAsync();
    videoProperties.Keywords.Add("Liked");
    await videoProperties.SavePropertiesAsync();
    

    虽然您可以将一些信息添加到关键字列表中,但它仍然非常有限。 所以实现这个特性的最佳实践是创建一个数据库表来记录信息。你也可以设置一个Comment 属性使用DocumentProperties.Comment,更多你可以参考这个case

    【讨论】:

    • 当我尝试调用 SavePropertiesAsync() 时,我实际上得到了一个拒绝访问的异常,是的,我在我的应用程序中设置了功能“VideosLibrary”。我尝试编辑“SubTitle”属性,然后在尝试保存它时出现异常。
    • 我不想使用数据库的原因是,如果文件被删除或移动了怎么办?在那种情况下,我的数据库将不知道它,并且会导致不必要的复杂化,因为文件路径在移动时会发生变化。但是如果我将信息保存在文件本身上,那么即使文件移动或从文件系统中删除,futureacceslist 也会自动知道它,我不需要担心这种情况下的任何额外问题。
    • 你收到FileOpenPicker的文件了吗?
    • 不,不是使用 fileopenpicker,我实际上得到了 KnownFolders.VideosLibrary,然后使用 queryoptions 我得到了其中的文件,并且在那些 StorageFile 对象上我试图保存属性。 @Nico Zhu - MSFT
    • 我制作了一个带有查询选项的代码示例,但它在我身边有效。请check.
    猜你喜欢
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 2011-11-28
    • 2023-03-17
    • 1970-01-01
    • 2015-03-09
    • 2019-07-19
    • 2018-08-06
    相关资源
    最近更新 更多