Win10开发:文件操作之FileOpenPicker、FileSavePicker和FolderPicker
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
- 上一篇:C#读取网络流,读取网络上的js文件
- 下一篇:win10应用安装位置修改方法