将文件保存在文档库Windows 8 C#上

时间:2013-10-24 18:02:38

标签: c# onedrive windows-8.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);
 }

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

Isaac McGarvey所说的是正确的,但是你可以做些什么。我没有找到一种方法如何以编程方式切换库的默认保存文件夹,但您仍然可以访问库中包含的所有文件夹。唯一的想法是你需要知道绝对路径,所以如果你可以在那之前保存路径,你可以使用它来获得所需的文件夹:

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

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

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

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

我希望这会有所帮助。