В этой статье описывается, как использовать интерфейс многоплатформенного приложения .NET (.NET MAUI). IFileSystem Этот интерфейс предоставляет вспомогательные методы, которые обращаются к кэшу и каталогам данных приложения и помогают получать доступ к файлам в пакете приложения.
Реализация интерфейса по умолчанию IFileSystem доступна через FileSystem.Current свойство. Интерфейс IFileSystem и FileSystem класс содержатся в Microsoft.Maui.Storage пространстве имен.
Использование вспомогательных средств файловой системы
Каждая операционная система будет иметь уникальные пути к каталогам данных кэша приложений и приложений. Интерфейс IFileSystem предоставляет кроссплатформенный API для доступа к этим путям каталога.
Каталог кэша
Чтобы получить каталог приложения для хранения кэшированных данных. Данные кэша можно использовать для любых данных, которые должны сохраняться дольше временных данных, но не должны быть данными, необходимыми для работы приложения, так как операционная система может очистить это хранилище.
Чтобы получить каталог верхнего уровня приложения для любых файлов, которые не являются файлами данных пользователя. Эти файлы архивируются на платформе синхронизации операционной системы.
Чтобы открыть файл, упакованный в пакет приложения, используйте OpenAppPackageFileAsync метод и передайте имя файла. Этот метод возвращает только Stream для чтения содержимое файла. В следующем примере показано использование метода для чтения текстового содержимого файла:
C#
publicasync Task<string> ReadTextFile(string filePath)
{
using Stream fileStream = await FileSystem.Current.OpenAppPackageFileAsync(filePath);
using StreamReader reader = new StreamReader(fileStream);
returnawait reader.ReadToEndAsync();
}
В следующем примере показано, как открыть пакетный файл шрифта из пакета приложения:
Копирование пакета файла в папку данных приложения
Невозможно изменить пакетный файл приложения. Но вы можете скопировать пакетный файл в каталог кэша или каталог данных приложения. Следующий пример используется OpenAppPackageFileAsync для копирования пакетного файла в папку данных приложения:
C#
publicasync Task CopyFileToAppDataDirectory(string filename)
{
// Open the source fileusing Stream inputStream = await FileSystem.Current.OpenAppPackageFileAsync(filename);
// Create an output filenamestring targetFile = Path.Combine(FileSystem.Current.AppDataDirectory, filename);
// Copy the file to the AppDataDirectoryusing FileStream outputStream = File.Create(targetFile);
await inputStream.CopyToAsync(outputStream);
}
Различия между платформами
В этом разделе описываются различия платформы с вспомогательными службами файловой системы.
FileSystem.AppDataDirectory Возвращает файл FilesDir текущего контекста, который выполняет резервное копирование с помощью автоматического резервного копирования, начиная с API 23 и выше.
FileSystem.OpenAppPackageFileAsync
Файлы, добавленные в проект с помощью действия сборки MauiAsset , можно открыть с помощью этого метода. Проекты .NET MAUI обрабатывают любой файл в папке Resources\Raw как MauiAsset.
Метод FileSystem.OpenPackageFileAsync не может получить длину потока в Android путем доступа к свойству Result.Length . Вместо этого необходимо считывать весь поток и подсчитывать количество байтов, чтобы получить размер ресурса.
Идентификатор приложения, который является частью имени каталога, изменяется в каждой сборке, поэтому необходимо получить правильный идентификатор при каждом создании приложения для симулятора или устройства.
FileSystem.OpenAppPackageFileAsync
Файлы, добавленные в проект с помощью действия сборки MauiAsset , можно открыть с помощью этого метода. Проекты .NET MAUI обрабатывают любой файл в папке Resources\Raw как MauiAsset.
FileSystem.AppDataDirectory
Возвращает каталог, резервный LocalFolder копии в облако.
FileSystem.OpenAppPackageFileAsync
Файлы, добавленные в проект с помощью действия сборки MauiAsset , можно открыть с помощью этого метода. Проекты .NET MAUI обрабатывают любой файл в папке Resources\Raw как MauiAsset.
Важно!
В Windows упакованные приложения работают над виртуальной файловой системой, где операции чтения и записи перемещаются в сопоставленные расположения. Поэтому файлы могут не находиться там, где ожидалось. Дополнительные сведения см. в разделе "Общие операции файловой системы" и "Гибкая виртуализация".
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET MAUI
.NET MAUI — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.