我有一个xml文件包含一些预定义的名称。我希望它在执行应用程序时位于IsolatedStorage中。
我知道如何创建数据并将其保存到IsolatedStorage
但是如何直观地复制/粘贴现有文件?
IsolatedStorageFile isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();
isolatedStorage.FileExists(filePath)
我认为向resources
添加文件会导致在运行时加载整个文件,我不希望这样。我是对的吗?
答案 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);
}
}
}
}