1

我正在为 Windows 8 创建一个简单的应用程序,它将一个 xml 文件写入文档库。

问题是当我保存文件时,它将它保存在 skydrive 上,我想将它保存在 c:\Users\pc-name\Documents 上。我正在使用 KnownFolders.DocumentsLibrary 并更新了清单以保存 xml 文件,否则我无法在其中保存任何文件。

public static async void XmlSaveFreeChallenge(Challenge currentChallenge)
{
    var challenge = new XElement("Challenge");
    var docSave = new XDocument(challenge);
    challenge.Add(new XAttribute("Name", currentChallenge.Template));

    var pontos = new XElement("Type", currentChallenge.Type);
    docSave.Descendants("Challenge").FirstOrDefault().Add(pontos);

    var folder = KnownFolders.DocumentsLibrary;
    var outputStream = await folder.OpenStreamForWriteAsync("CaiMUfiles\\output\\Desafios\\" + currentChallenge.Template + ".xml", CreationCollisionOption.ReplaceExisting);
    var ms = new MemoryStream();
    docSave.Save(outputStream, SaveOptions.None);
    await ms.CopyToAsync(outputStream);
 }
4

2 回答 2

3

用户可以选择文档库指向的位置。请参阅以下选项:设置超级按钮 -> 更改 PC 设置 -> SkyDrive -> 默认将文档保存到 SkyDrive

我不确定您的应用是否可以覆盖用户在那里的选择。即使有可能,尊重用户的选择可能会更好。

于 2013-11-23T15:08:40.827 回答
0

艾萨克·麦加维(Isaac McGarvey)所说的是正确的,但是您可以做一些事情。我没有找到如何以编程方式切换库的默认保存文件夹的方法,但您仍然可以访问库中包含的所有文件夹。唯一的想法是您需要知道绝对路径,因此如果您可以在此之前保存路径,则可以使用它来获取所需的文件夹:

StorageFolder folder = await StorageFolder.GetFolderFromPathAsync("AbsolutePath");

然后你可以开始枚举创建或任何你需要的东西。问题是,如果你使用例如

List<StorageFolder> folder = await KnownFolders.DocumentsLibrary.GetFoldersAsync();

您不会获得用于文档的文件夹和用于 SkyDrive 的文件夹以及用于其他链接到库的文件夹的文件夹,您只会在一个列表中获得所有这些文件夹中的所有文件夹,这意味着您无法选择保存文件的位置。

我希望这能有所帮助。

于 2013-12-06T15:08:43.700 回答