我如何在Windows Phone 8中写入特定位置?
本文关键字:定位 位置 Windows Phone | 更新日期: 2023-09-27 18:01:53
当我按下按钮时,我希望它将文件覆盖到特定文件夹。
我使用以下代码:
private void btnArial_Click(object sender, RoutedEventArgs e)
{
string cssDocument = "body{font-family:'"Arial'";}";
//I want to write file style.css to folder css inside html
string path = Package.Current.InstalledLocation.Path + "''Html''css''style.css";
if (File.Exists(path))
{
StreamWriter writer = new StreamWriter(path);
writer.Write(cssDocument);
writer.Close();
}
changeStyle(new FontFamily("Arial"));
}
当我在模拟器和实际设备上测试时,它工作正常。
但是当我提交应用程序到商店时,它得到了错误-当我按下那个按钮时应用程序退出
安装目录(package . current . installlocation)是一个只读位置。不幸的是,由于Visual Studio优化开发时部署的方式,当应用程序从vs部署时,它被设置为读写,这就是为什么你在将应用程序提交到商店后看到行为的差异。
如果需要修改安装目录中的文件,必须首先将其复制到一个可写的位置。
我更喜欢在WP8中使用隔离存储来写文件,它永远不会失败。你也可以使用Windows。存储api。
private async void MyButton_Click(object sender, RoutedEventArgs e)
{
string cssDocument = "body{font-family:'"Arial'";}";
// using Windows.Storage
StorageFolder folder = ApplicationData.Current.LocalFolder;
folder = await folder.CreateFolderAsync("HTML", CreationCollisionOption.OpenIfExists);
folder = await folder.CreateFolderAsync("CSS", CreationCollisionOption.OpenIfExists);
StorageFile file = await folder.CreateFileAsync("style.css", CreationCollisionOption.ReplaceExisting);
using (var writer = new StreamWriter(await file.OpenStreamForWriteAsync()))
{
writer.Write(cssDocument);
}
// using using System.IO.IsolatedStorage;
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
if (!store.DirectoryExists("HTML/CSS"))
store.CreateDirectory("HTML/CSS");
using (var writer = new StreamWriter(store.OpenFile("HTML/CSS/style.css", FileMode.Create)))
{
writer.Write(cssDocument);
}
}
changeStyle(new FontFamily("Arial"));
}
完全正确。在隔离存储中写入文件。它更简单,更直接。这里的文件可以访问,查看,修改,删除,替换在一个非常明确的方式。我个人更喜欢隔离存储。