Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе рассматриваются сведения о начале чтения и записи в файлы в приложении универсальной платформы Windows (UWP). Вводятся основные API-интерфейсы и типы, а ссылки предоставляются для получения дополнительных сведений.
Это не учебник. Если требуется руководство, см. статью "Создание, запись и чтение файла ", который, помимо демонстрации создания, чтения и записи файла, показывает, как использовать буферы и потоки. Кроме того, вы можете ознакомиться с примером доступа к файлам , в котором показано, как создавать, читать, записывать, копировать и удалять файл, а также как извлекать свойства файла и запоминать папку, чтобы приложение было легко получить к нему доступ.
Мы рассмотрим код для записи и чтения текста из файла и доступа к локальным, перемещаемым и временным папкам приложения.
Что нужно знать
Ниже приведены основные типы, которые необходимо знать для чтения или записи текста из/в файл.
Windows.Storage.StorageFile представляет файл. Этот класс содержит свойства, предоставляющие сведения о файле и методах для создания, открытия, копирования, удаления и переименования файлов. Вы можете быть привыкшими работать со строковыми путями. Существуют некоторые API среды выполнения Windows, которые принимают строковый путь, но чаще вы будете использовать StorageFile для представления файла, так как некоторые файлы, с которыми вы работаете в UWP, могут не иметь пути или может иметь неуправляемый путь. Используйте StorageFile.GetFileFromPathAsync() для преобразования строкового пути в StorageFile.
Класс FileIO предоставляет простой способ чтения и записи текста. Этот класс также может считывать или записывать массив байтов или содержимое буфера. Этот класс очень похож на класс PathIO . Основное различие заключается в том, что вместо того, чтобы принимать строковый путь, так как PathIO делает, он принимает StorageFile.
Windows.Storage.StorageFolder представляет папку (каталог). Этот класс имеет методы для создания файлов, запроса содержимого папки, создания, переименования и удаления папок и свойств, которые предоставляют сведения о папке.
Распространенные способы получения StorageFolder:
- Windows.Storage.Pickers.FolderPicker , который позволяет пользователю перейти к папке, которую они хотят использовать.
- Windows.Storage.ApplicationData.Current, который предоставляет StorageFolder, относящуюся к одной из папок, локальной для приложения (например, локальная, перемещаемая и временная папка).
- Windows.Storage.KnownFolders, который предоставляет StorageFolder для известных библиотек, таких как музыкальные библиотеки или библиотеки изображений.
Запись текста в файл
В этом руководстве мы рассмотрим простой сценарий: чтение и написание текста. Сначала рассмотрим некоторый код, использующий класс FileIO для записи текста в файл.
Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile file = await storageFolder.CreateFileAsync("test.txt",
Windows.Storage.CreationCollisionOption.OpenIfExists);
await Windows.Storage.FileIO.WriteTextAsync(file, "Example of writing a string\r\n");
// Append a list of strings, one per line, to the file
var listOfStrings = new List<string> { "line1", "line2", "line3" };
await Windows.Storage.FileIO.AppendLinesAsync(file, listOfStrings); // each entry in the list is written to the file on its own line.
Сначала мы определяем расположение файла.
Windows.Storage.ApplicationData.Current.LocalFolder предоставляет доступ к локальной папке данных, которая создается для приложения при его установке. См. Доступ к файловой системе для получения дополнительных сведений о папках, к которым ваше приложение может получить доступ.
Затем мы используем StorageFolder , чтобы создать файл (или открыть его, если он уже существует).
Класс FileIO предоставляет удобный способ записи текста в файл.
FileIO.WriteTextAsync() заменяет все содержимое файла предоставленным текстом.
FileIO.AppendLinesAsync() добавляет коллекцию строк в файл, записывая каждую строку на отдельной строчке.
Чтение текста из файла
Как и при написании файла, чтение файла начинается с указания расположения файла. Мы будем использовать то же расположение, что и в приведенном выше примере. Затем мы будем использовать класс FileIO для чтения его содержимого.
Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile file = await storageFolder.GetFileAsync("test.txt");
string text = await Windows.Storage.FileIO.ReadTextAsync(file);
Вы также можете считывать каждую строку файла в отдельные строки в коллекции с помощью IList<string> contents = await Windows.Storage.FileIO.ReadLinesAsync(sampleFile);
Доступ к файловой системе
На платформе UWP доступ к папкам ограничен, чтобы обеспечить целостность и конфиденциальность данных пользователя.
Папки приложений
При установке приложения UWP создается несколько папок по адресу c:\users<user name>\AppData\Local\Packages<идентификатор пакета>\, чтобы хранить, среди прочего, локальные, перемещаемые и временные файлы приложения. Приложению не нужно объявлять какие-либо возможности для доступа к этим папкам, и эти папки недоступны другими приложениями. Эти папки также удаляются при удалении приложения.
Это некоторые из папок приложений, которые обычно используются:
LocalState: для данных, локальных для текущего устройства. При резервном копировании устройства данные в этом каталоге сохраняются в образе резервного копирования в OneDrive. Если пользователь сбрасывает или заменяет устройство, данные будут восстановлены. Получите доступ к этой папке с помощью
Windows.Storage.ApplicationData.Current.LocalFolder.. Сохраните локальные данные, которые вы не хотите сохранять резервные копии в OneDrive, в LocalCacheFolder, к которой можно получить доступ с помощьюWindows.Storage.ApplicationData.Current.LocalCacheFolder.RoamingState: данные, хранящиеся здесь, больше не перемещались (с Windows 11), но папка по-прежнему доступна. Получите доступ к папке для роуминга с помощью
Windows.Storage.ApplicationData.Current.RoamingFolder. Рекомендуемая замена — служба приложений Azure . Служба приложений Azure широко поддерживается, хорошо документирована, надежна и поддерживает кроссплатформенные и кросс-экосистемные сценарии, такие как iOS, Android и Интернет.TempState: для данных, которые могут быть удалены, когда приложение не запущено. Доступ к этой папке с помощью
Windows.Storage.ApplicationData.Current.TemporaryFolder.
Доступ к остальной части файловой системы
Приложение UWP должно объявить свое намерение получить доступ к определенной пользовательской библиотеке, добавив соответствующую возможность в его манифест. Затем пользователю будет предложено установить приложение, чтобы убедиться, что они авторизуют доступ к указанной библиотеке. Если нет, приложение не установлено. Существуют возможности для доступа к изображениям, видео и музыкальным библиотекам. Полный список см. в объявлении возможностей приложений . Чтобы получить StorageFolder для этих библиотек, используйте класс Windows.Storage.KnownFolders.
Библиотека документов
Хотя существует возможность доступа к библиотеке документов пользователя, эта возможность ограничена, что означает, что приложение, объявляющее его, будет отклонено в Microsoft Store, если вы не следуйте процессу, чтобы получить специальное утверждение. Он не предназначен для общего использования. Вместо этого используйте средства выбора файлов или папок (см. раздел "Открыть файлы и папки" с помощью средства выбора и сохранения файла с помощью средства выбора), которые позволяют пользователю переходить к папке или файлу. Когда пользователь переходит к папке или файлу, он неявно предоставил приложению разрешение на доступ к нему и система разрешает доступ.
Общий доступ
Кроме того, приложение может объявить ограниченные широкие возможности fileSystem в манифесте, что также требует утверждения Microsoft Store. Затем приложение может получить доступ к любому файлу, к которому у пользователя есть доступ, не требуя вмешательства средства выбора файлов или папок.
Полный список расположений, доступных для приложений, см. в разделе "Разрешения на доступ к файлам".
Полезные API и документы
Ниже приведена краткая сводка по API и другой полезной документации, чтобы помочь вам приступить к работе с файлами и папками.
Полезные API
| API (Интерфейс программирования приложений) | Описание |
|---|---|
| Windows.Storage.StorageFile | Предоставляет сведения о файле и методах для создания, открытия, копирования, удаления и переименования файлов. |
| Windows.Storage.StorageFolder | Предоставляет сведения о папке, методах создания файлов и методов для создания, переименования и удаления папок. |
| FileIO | Предоставляет простой способ чтения и записи текста. Этот класс также может считывать или записывать массив байтов или содержимое буфера. |
| PathIO | Обеспечивает простой способ чтения и записи текста в файл по указанному строковому пути к файлу. Этот класс также может считывать или записывать массив байтов или содержимое буфера. |
| DataReader и DataWriter | Чтение и запись буферов, байтов, целых чисел, графических идентификаторов, интервалов времени и т. д. в поток. |
| Windows.Storage.ApplicationData.Current | Предоставляет доступ к папкам, созданным для приложения, таким как локальная папка, перемещаемая папка и временные файлы. |
| Windows.Storage.Pickers.FolderPicker | Позволяет пользователю выбирать папку и возвращает StorageFolder для неё. Таким образом вы получаете доступ к расположениям, к которым приложение не может получить доступ по умолчанию. |
| Windows.Storage.Pickers.FileOpenPicker | Позволяет пользователю выбрать файл для открытия и возвращает StorageFile для него. Таким образом вы получаете доступ к файлу, к которому приложение не может получить доступ по умолчанию. |
| Windows.Storage.Pickers.FileSavePicker | Позволяет пользователю выбрать имя файла, расширение и расположение хранилища для файла. Возвращает StorageFile. Это способ сохранения файла в расположении, к которому приложение не может получить доступ по умолчанию. |
| в пространстве имен Windows.Storage.Streams | Охватывает чтение и запись потоков. В частности, обратите внимание на классы DataReader и DataWriter, которые считывают и записывают буферы, байты, целые числа, идентификаторы GUID, интервалы времени и многое другое. |
Полезные документы
| Тема | Описание |
|---|---|
| Пространство имен Windows.Storage | Документация API. |
| Файлы, папки и библиотеки | Концептуальные документы. |
| создание, запись и чтение файла | Описывает создание, чтение и запись текста, двоичные данные и потоки. |
| Начало хранения данных приложения локально | Помимо рекомендаций по сохранению локальных данных, рассматриваются цели папки LocalSettings и LocalCache. |
| Хранение и извлечение настроек и других данных приложения | Общие сведения о различных хранилищах данных приложения, таких как локальные, перемещаемые и временные папки. |
| разрешения на доступ к файлам | Сведения о расположении файловой системы, к которым может получить доступ ваше приложение. |
| Открытие файлов и папок с помощью средства выбора | Показывает, как получить доступ к файлам и папкам, позволяя пользователю решать через интерфейс элементов выбора. |
| Windows.Storage.Streams | Типы, используемые для чтения и записи потоков. |
| Файлы и папки в библиотеках музыки, рисунков и видео | Описывает удаление папок из библиотек, получение списка папок в библиотеке и обнаружение сохраненных фотографий, музыки и видео. |
Полезные примеры кода
| Пример кода | Описание |
|---|---|
| Пример данных приложения | Показывает, как хранить и извлекать данные, относящиеся к каждому пользователю, с помощью API данных приложения. |
| пример доступа к файлам |
Показывает, как создавать, читать, записывать, копировать и удалять файл. |
| Пример выбора файлов | Показывает, как получить доступ к файлам и папкам, позволяя пользователю выбирать их с помощью пользовательского интерфейса, а также как сохранить файл, чтобы пользователь смог указать имя, тип файла и расположение сохраненного файла. |
| Пример JSON | Показывает, как кодировать и декодировать объекты нотации объектов JavaScript (JSON), массивы, строки, числа и логические значения с помощью пространства имен Windows.Data.Json. |
| Дополнительные примеры кода | Выберите файлы, папки и библиотеки в раскрывающемся списке категорий. |