我需要在包含为资源(Android中的资产)的数据库中读取并将其写回到SQLite期望它所在的位置。在Xamarin.Forms应用程序中,这适用于Android项目。
const string dataBaseName = "birdsnbflys.db3";
string dbPath = FileAccessHelper.GetLocalFilePath(dataBaseName);
if (!System.IO.File.Exists(dbPath))
{
var dbAssetStream = Assets.Open(dataBaseName);
var dbFileStream = new System.IO.FileStream(dbPath, System.IO.FileMode.OpenOrCreate);
var buffer = new byte[1024];
int b = buffer.Length;
int length;
while ((length = dbAssetStream.Read(buffer, 0, b)) > 0)
{
dbFileStream.Write(buffer, 0, length);
}
dbFileStream.Flush();
dbFileStream.Close();
dbAssetStream.Close();
}
在使用MvvmCross的应用程序中需要做同样的事情但是还没有找到任何关于如何使用ResourceLoader插件的GetResourceStream方法的示例或讨论。我有一个接口定义了Core PCL项目以及Android项目中特定于平台的实现。这是我可以使用ResourceExists方法确定指定文件是否实际存在的点。只是还不知道如何使用GetResourceStream方法。
任何指针都会受到赞赏。
谢谢, 戴夫