我正在制作WP8.1 Silverlight应用程序,它已基本完成,但我有一个大问题。
public void CheckAndCopyDBToIsoStore(params bool[] list)
{
// Obtain a reference to the application's isolated storage
IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication();
//Only copy db file over if it does not already exist
if (!iso.FileExists("TankolasKonyveloDB.sdf") || (list.Length == 1 && list[0] == true))
{
using (Stream input = Application.GetResourceStream(new Uri("TankolasKonyveloDB.sdf",
UriKind.Relative)).Stream)
{
using (IsolatedStorageFileStream output = iso.CreateFile("TankolasKonyveloDB.sdf"))
{
byte[] readBuffer = new byte[4096];
int bytesRead = -1;
// Copy the file from the install folder to isolated storage.
while ((bytesRead = input.Read(readBuffer, 0, readBuffer.Length)) > 0)
{
output.Write(readBuffer, 0, bytesRead);
}
output.Close();
output.Dispose();
iso.Dispose();
}
}
}
}
我在App.xaml.cs中有这个方法,它在没有参数的应用程序启动时在构造函数中调用一次,如果它不存在则将空数据库复制到isostore。它运作良好。接下来我要做的是,如果我单击一个按钮,我会再次使用bool
参数调用此方法,其值为true
。当我这样做时,我想在现有的运行时再次复制空数据库。
在
行IsolatedStorageFileStream output = iso.CreateFile("TankolasKonyveloDB.sdf")
我得到一个例外:
IsolatedStorageFileStream上不允许操作
我用谷歌搜索它,答案是我必须关闭并处理连接和一切,但问题仍然存在。而不是iso.CreateFile
我尝试了OpenFile
FileMode.OpenOrCreate
,Create
和CreateNew
......他们都没有工作。
所以问题是,我想将.sdf
文件复制到isostore,如果它已经存在并且我不想在每次启动时再次复制它,除非我表达通过点击该按钮。
如果某人有解决方案或想法,请帮助我!