我正在为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);
}
答案 0 :(得分:3)
用户可以选择文档库指向的位置。请参阅以下选项:设置超级按钮 - >更改电脑设置 - > SkyDrive - >默认情况下将文档保存到SkyDrive
我不确定您的应用是否可以覆盖用户的选择。即使有可能,也可以更好地尊重用户的选择。
答案 1 :(得分:0)
Isaac McGarvey所说的是正确的,但是你可以做些什么。我没有找到一种方法如何以编程方式切换库的默认保存文件夹,但您仍然可以访问库中包含的所有文件夹。唯一的想法是你需要知道绝对路径,所以如果你可以在那之前保存路径,你可以使用它来获得所需的文件夹:
StorageFolder folder = await StorageFolder.GetFolderFromPathAsync("AbsolutePath");
然后你可以开始枚举创建或任何你需要的东西。问题是如果你使用例如
List<StorageFolder> folder = await KnownFolders.DocumentsLibrary.GetFoldersAsync();
您不会获取SkyDrive的文档和文件夹文件夹以及其他链接文件夹的文件夹到库,您只需获取一个列表中所有这些文件夹中的所有文件夹,这意味着您无法选择保存文件的位置。
我希望这会有所帮助。