当前位置:首页 > Windows程序 > 正文

Win10开发:文件操作之FileOpenPicker、FileSavePicker和FolderPicker

2021-03-26 Windows程序

Win10的开发经常需要进行文件的操作,,因此文件的选择对话框FileOpenPicker、文件保存对话框FileSavePicker以及文件夹选择对话框FolderPicker十分重要。这三者的操作也比较简单。但有一些小细节可能许多人没注意到,听我慢慢道来,精彩留在后面。

三个对话框的操作在MSDN文档中也讲解的比较细致了,同时也有许多相似之处,我分开一个个做个简单的介绍。


FileOpenPicker:

MSDN文档:链接

属性:(主要)

ViewMode:文件的展示形式。有两个可选的枚举值,PickerViewMode.Thumbnail(缩略图形式)和PickerViewMode.List(列表形式)

SuggestedStartLocation:对话框打开时的默认路径。枚举值,详见 MSDN文档

FileTypeFilter:可选择的文件类型。也就是你要打开的是什么类型的文件,如txt、doc、jpg等。可以使用其Add方法添加类型。这个很重要,如果不设置会抛出异常

技术分享



方法:

FileOpenPicker只有两个方法,PickSingleFileAsync和PickMultipleFilesAsync。两者都是打开对话框,需要await修饰,区别从方法签名就可以看出。使用PickSingleFileAsync,用户只能选取一个文件,使用PickMultipleFilesAsync,用户可以选取多个文件。

下面是FileOpenPicker的简单操作:

private async void FileOpen_Click(object sender, RoutedEventArgs e) { FileOpenPicker picker = new FileOpenPicker(); picker.ViewMode = PickerViewMode.List; //设置文件的现实方式,这里选择的是图标 picker.SuggestedStartLocation =PickerLocationId.PicturesLibrary; //设置打开时的默认路径,这里选择的是图片库 picker.FileTypeFilter.Add(".srt"); //添加可选择的文件类型,这个必须要设置 file = await picker.PickSingleFileAsync(); //只能选择一个文件 if (file!=null) { //to do something } }
FileSavePicker:

msdn文档:链接

属性:(主要)

DefaultFileExtension:默认文件的拓展名

FileTypeChoices:文件的保存类型

SuggestedFileName:默认保存的文件名

SuggestedStartLocation:默认的文件保存位置

方法:

FileSavePicker只有一个方法:PickSaveFileAsync,打开对话框,需要await修饰

示例:

private async void FileSave_Click() { FileSavePicker picker = new FileSavePicker(); picker.DefaultFileExtension = ".txt"; picker.FileTypeChoices.Add("Plain Text", new List<string>() { ".txt" }); picker.SuggestedFileName = "New Document"; picker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary; StorageFile file = await picker.PickSaveFileAsync(); }
效果图:

技术分享



尼玛,说好的精彩在后面呢?其实并没有什么精彩的,只是后面比前面的稍微比较有价值点


FolderPicker:

msdn文档:链接

属性:(主要)

几个主要的属性ViewMode、SuggestedStartLocation和FileTypeFilter都跟FileOpenPicker一样,就不多废话了。不过似乎设置FileTypeFilter并没有什么卵用,稍后说这个问题。

方法:QueryOptions

FolderPicker有两个方法,PickSingleFolderAsync和PickFolderAndContinue,打开文件夹选择器,都需要await修饰。前者用于WP中,后者用于PC上。

调用PickSingleFolderAsync获得folder之后,可以调用其.GetFilesAsync()方法获取当前文件夹下的文件。现在来说说那个没有什么卵用的FileTypeFilter。

看看下面几行代码:

private async void Folder_Click() { FolderPicker picker = new FolderPicker(); picker.FileTypeFilter.Add(".srt"); StorageFolder folder = await picker.PickSingleFolderAsync(); var files = await folder.GetFilesAsync(); int num = files.Count; }

我的目的是读取桌面上的字幕文件(.srt)。运行后num的值为6,然而我的桌面是这样的,问题不言而喻了吧。没错虽然设置了FileTypeFilter,然而并没有什么卵用。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/67848.html