在应用程序开发过程中经常需要使用到文件打开和文件保存,在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 }