如何在开发时将现有文件添加到IsolatedStorage?

时间:2013-09-20 17:00:14

标签: c# windows-phone-7 windows-phone-8 windows-phone isolatedstorage

我有一个xml文件包含一些预定义的名称。我希望它在执行应用程序时位于IsolatedStorage中。

我知道如何创建数据并将其保存到IsolatedStorage但是如何直观地复制/粘贴现有​​文件?

IsolatedStorageFile isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();
isolatedStorage.FileExists(filePath)

我认为向resources添加文件会导致在运行时加载整个文件,我不希望这样。我是对的吗?

2 个答案:

答案 0 :(得分:2)

如果你想要的是将文件复制到你自己的设备隔离存储器以进行测试,你可以使用 Windows Phone IsoStoreSpy。它提供了一个界面,可以查看和修改当前在您设备上的应用程序的隔离存储中的文件。

如果你想要的只是让你的xml文件附带你的xap并且不打算修改它,只需将它复制到项目中并将文件的构建操作设置为内容。

最后,如果您想要的是xml文件附带xap,然后在运行时将其复制到isostorage以便您可以修改它,那么您可以按照here复制扩展方法并按照说明进行操作。

答案 1 :(得分:2)

根据您的问题,我可以理解您的文件在启动时应该存在于独立存储中。我问你的是,它会在你的应用程序中获取该文件的位置?

显然你需要添加到应用程序资源。右键单击解决方案资源管理器并添加xml文件。将文件绑定从内容更改为资源。

使用以下代码从xml文件中获取数据。

StreamResourceInfo strm = Application.GetResourceStream(new Uri("/NewApp;component/Sources/employees.xml", UriKind.Relative));
StreamReader reader = new StreamReader(strm.Stream);
string data = reader.ReadToEnd();

在这段代码中,我假设NewApp是我的应用名称,并且我将员工xml文件保存在我创建的Sources文件夹中。我已经将xml文件的数据读入字符串数据变量。

如果你非常严格地将它保存到IsolatedStorage,那么你可以检查存储是否包含这个文件,如果没有将文件添加到存储中,或者你只能从存储中加载它。

using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            if (storage.FileExists("employees.xml"))
            {
                //Load it
            }
            else
            {
                System.Windows.Resources.StreamResourceInfo strm = Application.GetResourceStream(new Uri("/NewApp;component/Sources/employees.xml", UriKind.Relative));
                System.IO.StreamReader reader = new System.IO.StreamReader(strm.Stream);
                string data = reader.ReadToEnd();
                using (var file = storage.OpenFile("employees.xml", System.IO.FileMode.Create))
                {
                    using (var writer = new System.IO.StreamWriter(file))
                    {
                        writer.WriteLine(data);
                    }
                }
            }
        }