如何在开发时将现有文件添加到隔离存储

本文关键字:添加 文件 隔离 存储 开发 | 更新日期: 2023-09-27 18:32:13

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

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

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

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

如何在开发时将现有文件添加到隔离存储

如果你想要的是将文件复制到你自己的设备独立存储中进行测试,你可以使用Windows Phone IsoStoreSpy。它提供了一个界面,能够查看和修改当前位于设备上应用的独立存储中的文件。

如果您想要的只是让 xml 文件随 xap 一起提供,并且不打算修改它,只需将其复制到项目中并将文件的生成操作设置为内容。

最后,如果您想要的是让您的 xml 文件随 xap 一起提供,然后在运行时将其复制到 isostorage,以便您可以对其进行修改,那么您可以从此处复制扩展方法并按照说明进行操作。

从您的问题中,我可以理解您的文件在启动时应该存在于独立存储中。我问你的是,它将在哪里获取你的应用程序中的文件?

因此,显然您需要添加到应用程序资源中。右键单击解决方案资源管理器并添加 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文件保存在我创建的"源"文件夹中。我已经将 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);
                    }
                }
            }
        }