如何使 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的主要内容,如果未能解决你的问题,请参考以下文章

如何使 RelativeLayout 半透明但不使活动

如何用word使图片上下居中

如何使图像自动调整大小,使宽度为 100% 并相应调整高度?

如何使 UISegmentedcontrol 透明?

如何使 textarea 填充 div 块?

如何使 UITableViewCell 显示为禁用?