当我按下按钮时,我希望它将文件覆盖到特定文件夹。
我使用此代码:
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"));
}
当我在模拟器和实际设备上进行测试时,它运行正常。
但是当我将应用程序提交到商店时,它出错了 - 当我按下该按钮时应用程序退出。
答案 0 :(得分:1)
安装目录(Package.Current.InstalledLocation)是只读位置。遗憾的是,由于Visual Studio优化开发时部署的方式,从VS部署应用程序时,它设置为读写。这就是为什么在将应用程序提交到商店后,您会看到行为上的差异。
如果您需要修改安装目录中的文件,则必须先将其复制到可写入的位置 - 例如。你的本地文件夹。
答案 1 :(得分:0)
我更喜欢在WP8中使用独立存储来编写文件,它永远不会失败。您也可以使用Windows.Storage apis。
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"));
}
答案 2 :(得分:0)
完全.. 将文件写入独立存储。它更容易,更直接。可以以非常清晰的方式访问,查看,修改,删除和替换此处的文件。我个人更喜欢隔离存储。