如何在开发时将现有文件添加到隔离存储
本文关键字:添加 文件 隔离 存储 开发 | 更新日期: 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);
}
}
}
}