我有一个Windows Phone 7应用程序,已经在商店里存在多年了。它安装在WP 7.x,8.0和8.1设备上。我正在将应用程序转换为目标WP8.1,因此我可以使用较新的Microsoft AdControl(旧版本将在年底停止投放广告)。这意味着我需要开始使用ApplicationData.Current.LocalFolder来读/写数据,而不是使用旧的IsolatedStorageFile.GetUserStoreForApplication()。
我的用户使用IsolatedStorageFile.GetUserStoreForApplication()存储了大量数据。如果他们将应用程序升级到WP8.1版本,我想确保他们不会丢失任何这些数据,并且仍然可以使用ApplicationData.Current.LocalFolder访问数据。
任何人都可以确认是这种情况吗?
这就是我在WP7中编写数据的方式:
using (IsolatedStorageFile applicationStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream file = applicationStorage.OpenFile(filename, FileMode.Create, FileAccess.Write))
{
using (StreamWriter sw = new StreamWriter(file))
{
sw.WriteLine("some data goes here");
}
}
}
这就是我将如何阅读WP8.1中的数据:
using (Stream stream = await ApplicationData.Current.LocalFolder.OpenStreamForReadAsync(filename))
{
using (StreamReader sr = new StreamReader(stream))
{
String line = sr.ReadLine();
// Do something with line
}
}
答案 0 :(得分:3)
Windows Phone 7应用,使用独立存储:
var store = IsolatedStorageFile.GetUserStoreForApplication();
Windows 8.1 / UWP app:
var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
两者都会产生相同的文件夹。绝对路径不同:
但两条路径将共享相同的文件夹/文件。最重要的是编辑 Package.appxmanifest XML。在Visual Studio中,单击“查看代码”上的鼠标右键(不要通过“ View Designer ”打开)。在此XML中,您必须编辑此行:
<mp:PhoneIdentity PhoneProductId="NEW_APP_ID" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
将 PhoneProductId 替换为旧版WP7应用的ID, PhonePublisherId 替换旧的 PublisherId (来自旧的WP7应用)。如果你不这样做,那些代码会给你不同的文件夹(WP 8.1 / UWP代码给你空文件夹)。但是,使用此更改的ID,您将收到包含所有旧数据的相同文件夹。
新应用将在安装后替换旧应用。