Xamarin Essentials FileSystem 可以保存异步吗

dev*_*969 5 xamarin

查看 Xamarin 基本要素并想知道 FileSystem 的目的是什么。

我一直在寻找可以立即为我异步加载和保存文件的东西。

它在我看来,可能是我不理解它给您的唯一功能是保存和加载文件的位置,并且没有实际为您保存它的功能,例如“旧 PCLStorage”

这样对吗?

Sus*_*ver 6

Xamarin Essentials 文件系统助手所做的所有工作都是提供对应用程序内两个不同目录的访问,CacheDirectory以及对应用程序内AppDataDirectory只读预捆绑文件的访问权限,因此您不必为这些位置编写基于平台的代码并执行您的自己的 DI(或使用 Forms 的 DI)来访问它们...

一旦您拥有string基于 -based 的目录位置,您就可以使用普通的 .Net(Std) 文件和目录 I/O 例程。创建/删除子目录,使用 .Net(Std) 框架或第三方框架/包中的异步(或非)函数创建/读取/写入/删除文件。你的选择...

缓存目录

缓存目录是一个读/写位置,它实现对“本机”平台缓存位置的访问。在 Android 上这是缓存

var cacheDir = FileSystem.CacheDirectory;
Run Code Online (Sandbox Code Playgroud)

应用数据目录

应用程序数据目录是应存储常规文件的“默认”位置。

正如文档所述:

任何不是用户数据文件的文件

仅供参考:这不是用于 Sqlite 数据库的地方,如果你正在实施/遵守平台相关的规范......当像 iOS 和 Android 这样的平台有 API 时,我不知道为什么 Essentials 不包含数据库位置和正式记录的位置...;-/

应用程序捆绑文件(只读)

OpenAppPackageFileAsync提供访问(通过Stream)为只读在应用程序中捆绑的文件(AndroidAssetsBundleResource,等。)

using (var stream = await FileSystem.OpenAppPackageFileAsync("sushiLogo.png"))
{
    using (var reader = new StreamReader(stream))
    {
        var fileContents = await reader.ReadToEndAsync();
    }
}
Run Code Online (Sandbox Code Playgroud)