文件、文件夹和库(二)
使用选取器打开和保存文件
关于文件、文件夹和库,如果深究其实还是有比较多的内容,我们这一次来学习一下选取器就收了。还有上篇博文中读写文本文件的三种方式可以细细体会一下。
文件选取器包含文件打开选取器(FileOpenPicker、FolderPicker)和文件保存选取器(FileSavePicker),分别用来打开文件和保存文件,这两个选取器的使用方法大致相同。
FileOpenPicker类:
ViewMode ,获取或设置文件选取器用来展示文件或文件夹的视图模式,属性值由PickerViewMode枚举来指定,该枚举有两个枚举值,List表示列表模式,Thumbnail表示缩略图模式
SuggestedStartLocation ,获取或设置文件选取器要呈现给用户的文件的初始位置。属性值由PickerLocationId枚举指定,此枚举一共有10个枚举值,自行转到定义进行查看。
FileTypeFilter,,获取文件选择器显示的文件类型的集合,文件类型可以是".txt",".jpg"等,使用Add来进行添加。
注意我们设置的ViewMode和SuggestedStartLocation值在应用程序第一次运行之后,再切换其他值运行,有时候并不会起作用,应该是操作系统自己有记录,然后这个FileTypeFilter属性是必须指定的。
FileOpenPicker picker = new FileOpenPicker(); //创建文件打开选取器
picker.ViewMode = PickerViewMode.Thumbnail; //将ViewMode的值设置为Thumbnail
picker.SuggestedStartLocation =PickerLocationId.PicturesLibrary; //将文件选取器打开文件的开始位置设置为图片库
picker.FileTypeFilter.Add(".jpg");
picker.FileTypeFilter.Add(".jpeg");
picker.FileTypeFilter.Add(".png");
FolderPicker类:
该类的属性和用法与FileOpenPicker类似。
FolderPicker folderPicker = new FolderPicker();
folderPicker.ViewMode = PickerViewMode.List;
folderPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
folderPicker.FileTypeFilter.Add("*");
FileSavePicker类:
该类我们经常使用到的3个属性是SuggestedStartLocation(同上)、FileTypeChoices、SuggestedFileName。FileTypeChoices是一个字典类型(IDictionary<System.String, IList<System.String>>),获取用户可选择分配到文件的有效文件类型的集合,SuggestedFileName 则是获取或设置文件保存选取器向用户建议的文件名。
FileSavePicker picker = new FileSavePicker();
picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
picker.FileTypeChoices.Add("Image", new List<string>() { ".jpg", ".jpeg", ".png", ".bmp", ".gif" });
picker.SuggestedFileName =DateTime.Now.ToString("yyyyMMddhhmmss");
我们来进行常规演示,首先是选取单个文件,多个文件,还有文件夹。
选取并显示一张图片:
private async void btn_pickpic_Click(object sender, RoutedEventArgs e) { FileOpenPicker picker = new FileOpenPicker(); picker.ViewMode = PickerViewMode.List; picker.SuggestedStartLocation =PickerLocationId.PicturesLibrary; picker.FileTypeFilter.Add(".jpg"); picker.FileTypeFilter.Add(".jpeg"); picker.FileTypeFilter.Add(".png"); storagefile = await picker.PickSingleFileAsync(); if (storagefile != null) { this.tb_pickedpic.Text = "Picked photo: " + storagefile.Name; WriteableBitmap writeableBitmap = new WriteableBitmap(500, 500); IRandomAccessStream stream = await storagefile?.OpenAsync(FileAccessMode.Read); await writeableBitmap.SetSourceAsync(stream); image.Source = writeableBitmap; } else { this.tb_pickedpic.Text = "Operation cancelled."; image.Source = null; } }
选取多张图片:
private async void btn_pickmultipic_Click(object sender, RoutedEventArgs e) { var picker = new FileOpenPicker(); picker.ViewMode = PickerViewMode.Thumbnail; picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary; picker.FileTypeFilter.Add(".jpeg"); picker.FileTypeFilter.Add(".png"); picker.FileTypeFilter.Add(".jpg"); IReadOnlyList<StorageFile> filelist =await picker.PickMultipleFilesAsync(); StringBuilder output = new StringBuilder("Picked files:"); if (filelist.Count>0) { foreach (var file in filelist) { output.Append(file.Name+"\n"); } } else { output.Append("none!"); } Showmsg(output.ToString()); }
Showmsg(output.ToString());是弹出对话框,显示所选择的图片。
选取文件夹:
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/66627.html
- 上一篇:JS window事件全集解析
- 下一篇:delphi创建服务程序