在應用程式開發過程中經常需要使用到檔案開啟和檔案儲存,在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 }
源碼下載