Windows Phone 8 IsolatedStorageFileStream

时间:2016-03-31 11:28:42

标签: c# silverlight windows-phone filestream isolatedstorage

我正在制作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.OpenOrCreateCreateCreateNew ......他们都没有工作。

所以问题是,我想将.sdf文件复制到isostore,如果它已经存在并且我不想在每次启动时再次复制它,除非我表达通过点击该按钮。

如果某人有解决方案或想法,请帮助我!

0 个答案:

没有答案