如何写入Windows Phone 8中的特定位置

时间:2014-05-05 04:42:39

标签: c# windows-phone-8

当我按下按钮时,我希望它将文件覆盖到特定文件夹。

我使用此代码:

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"));
    }

当我在模拟器和实际设备上进行测试时,它运行正常。

但是当我将应用程序提交到商店时,它出错了 - 当我按下该按钮时应用程序退出。

3 个答案:

答案 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)

完全.. 将文件写入独立存储。它更容易,更直接。可以以非常清晰的方式访问,查看,修改,删除和替换此处的文件。我个人更喜欢隔离存储。