Вы можете использовать Xamarin.Essentials
, чтобы получить доступ к вашему пакетному ресурсу / ресурсу только для чтения и скопировать его без необходимости использовать собственный код платформы или, если вы программируете в проекте Xamarin.Android, вы можете напрямую использовать Android.Content
.Активы
Предположим, у вас есть база данных в папке «Ресурсы Android»:
Assets
db.sqlite
Пример кода Xamarin Essentials / NetStd2.0:
var copyToLocationPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "db.sqlite");
if (!File.Exists(copyToLocationPath))
{
using (var assetStream = await Xamarin.Essentials.FileSystem.OpenAppPackageFileAsync("db.sqlite"))
using (var fileStream = new FileStream(copyToLocationPath, FileMode.Create, FileAccess.Write))
{
await assetStream.CopyToAsync(fileStream);
}
}
var connection = new SqliteConnection(copyToLocationPath);
Пример кода Xamarin для Android(Непосредственно используйте Assets
):
var copyToLocationPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "db.sqlite");
if (!File.Exists(copyToLocationPath))
{
using (var assetStream = Assets.Open("db.sqlite"))
using (var fileStream = new FileStream(copyToLocationPath, FileMode.Create, FileAccess.Write))
{
await assetStream.CopyToAsync(fileStream);
}
}