如何使 StorageFile.DisplayName getter 在 UWP 中系统地排除 FileType
Posted
技术标签:
【中文标题】如何使 StorageFile.DisplayName getter 在 UWP 中系统地排除 FileType【英文标题】:How to make the StorageFile.DisplayName getter exclude the FileType systematically in UWP 【发布时间】:2018-11-10 04:54:54 【问题描述】:这个问题已经被问到但没有得到答案,但了解 UWP 中的存储 API 的工作原理很重要。
WinRT StorageFile DisplayName strange behavior
我正在以不同格式(gif 和 json)保存文件,因此我需要跟踪常见的 StorageFile.DisplayName
getter,但此属性的行为是模糊的,因为有时 FileType
(.gif 或 .json ) 包含在 DisplayNme 中,有时不包含。
这种行为的原因是这个问题的目的,可能我正在寻找一个关于如何完全控制 DisplayName
的明确答案,我需要将 FileType
保留在前者之外而不求助字符串操作。
我取得的唯一进展就是能够重现这个“bug”;确实,当创建的文件位于 AppData 的 LocalSettings 中时,似乎总是包含 FileType
,而如果文件存储在 PictureLibrary
中,则不包含 FileType
。我的代码很简单,它使用
var fileName = "Test.gif";
var settingsFolder = await ApplicationData.Current.LocalFolder.CreateFolderAsync("SettingsFolder", folderCreationCollisionOption);
var file = await settingsFolder.CreateFileAsync(fileName, fileCreationCollisionOption);
或
var fileName = "Test.gif";
var settingsFolder = await KnownFolders.PicturesLibrary.CreateFolderAsync("SettingsFolder", folderCreationCollisionOption);
var file = await settingsFolder.CreateFileAsync(fileName, fileCreationCollisionOption);
前者返回file.DisplayName“Test.gif”,后者根据需要返回“Test”。但是,我需要在 AppData 中工作。
【问题讨论】:
尝试将 DisplayName(或完整的 StorageFile.Path)传递给Path.GetFileNameWithoutExtension(....)
【参考方案1】:
StorageFile.DisplayName 返回文件的用户友好名称。 在 UWP 应用程序中始终使用如下:
获取文件扩展名:
StorageFile.FileType
获取文件名和扩展名:
StorageFile.Name
【讨论】:
这没有回答问题。如上所述,您可以使用 DisplayName 获取“Test.gif”。以上是关于如何使 StorageFile.DisplayName getter 在 UWP 中系统地排除 FileType的主要内容,如果未能解决你的问题,请参考以下文章