Dostęp do danych i plików w aplikacjach Modern UI - Zapis pliku przy użyciu przeglądarki
Tłumaczenie na podstawie How to save files through file pickers (Modern UI style apps using C#/VB/C++ and XAML): Konrad Bojarczuk
Opublikowano: 2012-07-20
W tym odcinku dowiesz się, jak wykorzystać FileSavePicker, aby umożliwić Twoim użytkownikom określenie nazwy i lokalizacji pliku, w którym chcą zapisać zawartość aplikacji.
Wymagania:
- musisz rozumieć asynchroniczne programowanie aplikacji Modern UI w C# i Visual Basic - jeśli chcesz nauczyć się, jak pisać asynchroniczne aplikacje, zobacz Quickstart: Using the await operator for asynchronous programming.
Instrukcje
Krok 1. Tworzenie i dostosowywanie przeglądarki plików, aby wyświetlałalokalizacje, w których użytkownicy mogą zapisywać pliki.
Użyj FileSavePicker, aby umożliwić użytkownikowi Twojej aplikacji podanie nazwy, typu pliku i lokalizacji do zapisu. W łatwy sposób możesz dostosować przeglądarkę poprzez odpowiednie ustawienie właściwości w utworzonym FileSavePicker.
Przykład File picker sample demonstruje, jak tworzyć i dostosowywać do własnych potrzeb obiekt FileSavePicker:
C#
FileSavePicker savePicker = new FileSavePicker();
savePicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
// Dropdown of file types the user can save the file as
savePicker.FileTypeChoices.Add("Microsoft Word Document", new List<string>() { ".docx", ".doc" });
savePicker.FileTypeChoices.Add("Plain Text", new List<string>() { ".txt" });
// Default extension if the user does not select a choice explicitly from the dropdown
savePicker.DefaultFileExtension = ".docx";
// Default file name if the user does not type one in or select a file to replace
savePicker.SuggestedFileName = "New Document";
Powinieneś określić właściwości FileSavePicker, które są istotne dla Twoich użytkowników i aplikacji. Aby uzyskać więcej wskazówek na ten temat, zobacz Guidelines and checklist for file pickers.
Przykład File picker sample pokazuje, jak dostosować właściwości poprzez trzy ważne atrybuty SuggestedStartLocation, FileTypeChoices i SuggestedFileName.
Dopasowanie FileSavePicker
- W związku z tym, że użytkownik aplikacji zapisuje dokument lub plik tekstowy, w przykładzie użyto ustawienia savePicker.SuggestedStartLocation biblioteki dokumentów, korzystając z atrybutu KnownFolders.DocumentsLibrary:
C#
savePicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
Powinieneś określić SuggestedStartLocation jako lokalizację systemu plików, odpowiednią dla rozszerzenia pliku, którym się posługujemy. Jeśli użytkownik wybiera pliki muzyczne, zdjęcia lub filmy, wówczas prawidłowa lokalizacja to odpowiednio: biblioteka muzyki, zdjęć lub filmów. Natomiast, dla innych typów plików będzie to biblioteka dokumentów. Musisz pamiętać, że jest to tylko miejsce startowe, a użytkownik może swobodnie poruszać się po innych lokalizacjach.
- Musimy upewnić się, że aplikacja potrafi otwierać pliki, które zostały wcześniej zapisane. W przykładzie użyto savePicker.FileTypeChoices.InsertAt, aby określić, jaki typ plików jest obsługiwany (w tym wypadku będzie to pliki tekstowy i rozszerzenia kompatybilne z programem Word):
C#
// Dropdown of file types the user can save the file as
savePicker.FileTypeChoices.Add("Microsoft Word Document", new List<string>() { ".docx", ".doc" });
savePicker.FileTypeChoices.Add("Plain Text", new List<string>() { ".txt" });
Musisz upewnić się, że dane rozszerzenie obsługiwane jest przez Twoją aplikację.
Użytkownicy będą mogli zapisywać swoje pliki, zgodnie z typami, które zadeklarujesz w tej liście. Będą mogli również zmieniać typ pliku poprzez prosty wybór innego rozszerzenia z rozwijanej listy na dole, po prawej stronie przeglądarki. Pierwszy wybór, dokonany przez użytkownika, zostanie zapisany przez aplikację i umieszczony później jako domyślny. Aby zmienić typ domyślnego pliku, należy przestawić wartość, przypisaną w atrybucie savePicker.DefaultFileExtension.
Uwaga! Przeglądarka plików korzysta również z obecnie wybranego typu pliku, aby umożliwić filtrowanie plików, które wyświetla tak, że pliki odpowiadające kryteriom filtrowania pokazywane są użytkownikowi.
W poniższym przykładzie ustawiliśmy atrybut savePicker.SuggestedFileName, który odpowiada za wyświetlanie przez aplikację sugerowanej nazwy nowego pliku:
C#
// Default file name if the user does not type one in or select a file to replace
savePicker.SuggestedFileName = "New Document";
Postaraj się, aby sugerowana nazwa pliku była najbardziej adekwatna do rodzaju plików, jakie użytkownik będzie później zapisywał. Na przykład, program Word sugeruje często obecną nazwę pliku, jeśli taka istnieje lub jako pierwszą linię dokumentu, jeśli użytkownik zapisuje plik, który jeszcze nie posiada własnej nazwy.
Uwaga! Obiekty FileSavePicker wyświetlają przeglądarkę plików, używając PickerViewMode.List.
Krok 2. Pokaż okno wyboru pliku, aby zapisać plik.
Po ukończeniu procesu tworzenia i dostosowywania przeglądarki plików, pozwól użytkownikom Twojej aplikacji na zapis pliku poprzez wywołanie savePicker.PickSaveFileAsync.
Gdy użytkownik wpisze odpowiednią nazwę pliku, wybierze jego rozszerzenie, lokalizację i potwierdzi zapis pliku, to PickSaveFileAsync zwróci obiekt StorageFile, który będzie odpowiadał temu zapisanemu plikowi. Użycie operatora await spowoduje przetworzenie tego pliku.
Przykład File picker sample pokazuje, jak wyświetlić okno wyboru pliku w taki sposób, aby użytkownik mógł zapisać plik:
C#
StorageFile savedItem = await savePicker.PickSaveFileAsync();
if (null != savedItem)
{
// Application now has read/write access to the saved file
Scenario4FileName.Text = savedItem.Name;
}
else
{
Scenario4FileName.Text = "File was not returned";
}
Po ukończeniu procedury zapisu, aplikacja otrzymuje uprawnienia do odczytu i zapisu danego pliku. W przykładzie przedstawiono plik, przechwycony za pomocą parametru file i opcję sprawdzającą, czy dany plik jest właściwy. Jeśli chcesz wiedzieć więcej, jak odczytywać i zapisywać dane z pliku wynikowego, zobacz Odczyt i zapis pliku.
Porada - Zawsze sprawdzaj zapisany plik przed dalszym przetwarzaniem, aby upewnić się, że wszystko jest z nim w porządku. Jeśli plik jest poprawny, możesz zapisać zawartość do pliku, zgodnie z wymaganiami Twojej aplikacji.
Uwagi
Jeśli posiadasz kod, podobny do tego, który został zaprezentowany w tym poradniku, Twoja aplikacja powinna wyświetlać przeglądarkę plików i umożliwiać użytkownikom wybranie nazwy, rozszerzenia i lokalizacji podczas procedury zapisu pliku. Jeśli chcesz wiedzieć więcej na ten temat, zobacz Odczyt i zapis pliku.
Aby dodać do aplikacji opcję „Zapisz jako”, musisz dodać odpowiednią kontrolkę do interfejsu aplikacji, wywołując FileSavePicker. Jeśli chcesz poczytać więcej o dodawaniu kontrolek, zobacz Adding controls and content.
Jeśli chcesz, aby Twoja aplikacja zapewniała użytkownikom lokalizację zapisu pliku, zobacz Quickstart: Integrating with file picker contracts.