Windows Store App之文件选择器、文件保存器和文件夹选择器

  在应用程序开发过程中经常需要使用到文件打开和文件保存,在Windows8中Windows.Storage.Pickers命名空间为其提供了打开和保存文件的类:

描述
FileExtensionVector 表示文件扩展名的随机访问集合.
FileOpenPicker 表示允许用户选择和打开文件的 UI 元素的选择器.
FilePickerFileTypesOrderedMap 表示映射到关联文件类型(扩展名)的显示名称的集合.
FilePickerSelectedFilesArray 表示用户已通过使用文件选择器选择的存储文件的集合
FileSavePicker 表示允许用户为文件选择文件名、扩展名和存储位置的选择器.
FolderPicker 表示允许用户选择文件夹的 UI 元素的选择器.

   若要使用文件选择器和文件保存器,则需要在应用程序中添加选择器的声明。双击打开Package.appxmanifest,选择"声明"选项卡,添加文件选择器和文件保存器,就可以了。

一.FileOpenPicker(文件选择器)

属性描述

CommitButtonText

获取或设置文件打开选取器的提交按钮的标签文本.

FileTypeFilter

获取文件打开选择器显示的文档类型的集合.

SettingsIdentifier

获取或设置与文件打开选取器的状态关联的设置标识符.

SuggestedStartLocation

获取或设置文件打开选取器在其中查找要呈现给用户的文件的初始位置.

ViewMode

获取或设置文件打开选择器用于显示项目的视图模式.
方法描述
PickMultipleFilesAsync 显示文件选取器,以便用户可以选择多个文件.
PickSingleFileAsync 显示该文件选取器,以便用户可以选择某文件.
 1 /// <summary>
 2 /// 选择单个文件
 3 /// </summary>
 4 /// <param name="sender"></param>
 5 /// <param name="e"></param>
 6 async private void btnOpenFile_Click(object sender, RoutedEventArgs e)
 7 {    
 8     FileOpenPicker filePicker = new FileOpenPicker();
 9     filePicker.CommitButtonText = "确定";
10     filePicker.FileTypeFilter.Add(".txt");
11     filePicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
12     filePicker.ViewMode = PickerViewMode.Thumbnail;
13     StorageFile storageFile = await filePicker.PickSingleFileAsync();
14     if (storageFile != null)
15     {
16         string fileContent = await FileIO.ReadTextAsync(storageFile);
17         tbkContent.Text = fileContent;
18     }
19 }
20 
21 /// <summary>
22 /// 选择多个文件
23 /// </summary>
24 /// <param name="sender"></param>
25 /// <param name="e"></param>
26 async private void btnMultiOpenFile_Click(object sender, RoutedEventArgs e)
27 {
28     FileOpenPicker filePicker = new FileOpenPicker();
29     filePicker.CommitButtonText = "确定";
30     filePicker.FileTypeFilter.Add(".txt");
31     filePicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
32     filePicker.ViewMode = PickerViewMode.Thumbnail;
33     IReadOnlyList<StorageFile> storageFileList = await filePicker.PickMultipleFilesAsync();
34     if (storageFileList != null)
35     {
36         foreach (StorageFile file in storageFileList)
37         {
38             //TODO:继续后续文件操作
39         }
40 
41     }
42 }

二.FileSavePicker(文件保存器)

属性描述

CommitButtonText

在 pickerUI 文件中获取或设置提交按钮的标签文本.

DefaultFileExtension

获取或设置通过 fileSavePicker 保存的文件的默认文件扩展名.

FileTypeChoices

获取用户可选择分配到文件的有效文件类型的集合.

SettingsIdentifier

获取或设置与当前 FileSavePicker 实例关联的设置标识符.

SuggestedFileName

获取或设置文件保存选取器向用户建议的文件名.

SuggestedSaveFile

获取或设置文件选取器向用户建议的适用于保存文件的 storageFile.

SuggestedStartLocation

获取或设置文件保存选取器向用户建议的位置,作为要保存文件的位置.
方法描述
PickSaveFileAsync 显示文件选取器,以便用户可以保存文件和设置要保存的文件的文件名、扩展和位置.
 1  /// <summary>
 2 /// 文件保存器
 3 /// </summary>
 4 /// <param name="sender"></param>
 5 /// <param name="e"></param>
 6 async private void btnSaveFile_Click(object sender, RoutedEventArgs e)
 7 {
 8     FileSavePicker filePicker = new FileSavePicker();
 9     filePicker.CommitButtonText = "保存";
10     filePicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
11     filePicker.DefaultFileExtension = ".txt";
12     filePicker.FileTypeChoices.Add("txt", new List<string>() { ".txt" });
13     filePicker.SuggestedFileName = DateTime.Now.ToString("yyyyMMddhhmmss").ToString();
14     StorageFile storageFile = await filePicker.PickSaveFileAsync();
15     await FileIO.WriteTextAsync(storageFile, "测试数据", UnicodeEncoding.Utf8);
16 }

三.FolderPicker(文件保存器)

属性描述

CommitButtonText

获取或设置文件夹选取器的提交按钮的标签文本.

FileTypeFilter

获取文件夹选择器显示的文档类型的集合.

SettingsIdentifier

获取或设置与当前 FolderPicker 实例关联的设置标识符.

SuggestedStartLocation

获取或设置文件夹选取器在其中查找要呈现给用户的文件夹的初始位置.

ViewMode

获取或设置文件夹选择器用于显示项目的视图模式.
方法描述
PickSingleFolderAsync 显示 folderPicker 对象,以便用户可以选择文件夹.
 1  /// <summary>
 2 /// 文件夹选择器
 3 /// </summary>
 4 /// <param name="sender"></param>
 5 /// <param name="e"></param>
 6 async private void btnSelectFolder_Click(object sender, RoutedEventArgs e)
 7 {
 8     FolderPicker folderPicker = new FolderPicker();
 9     folderPicker.CommitButtonText = "选择";
10     folderPicker.FileTypeFilter.Add(".txt");
11     folderPicker.FileTypeFilter.Add(".jpg");
12     folderPicker.FileTypeFilter.Add(".png");
13     folderPicker.FileTypeFilter.Add(".doc");
14     folderPicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
15     folderPicker.ViewMode = PickerViewMode.Thumbnail;
16     StorageFolder storageFolder = await folderPicker.PickSingleFolderAsync();
17     //在选择文件夹下面添加文件夹
18     StorageFolder newFolder = await storageFolder.CreateFolderAsync("新建文件夹", CreationCollisionOption.GenerateUniqueName);
19 }

源码下载

代码之美
原文地址:https://www.cnblogs.com/betterchaner/p/2918104.html