1

ドキュメント ライブラリに xml ファイルを書き込む Windows 8 用のシンプルなアプリを作成しています。

問題は、ファイルを保存するときにスカイドライブに保存され、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 用のフォルダー、およびライブラリにリンクされた他のフォルダー用のフォルダーを取得することはできません。これらのすべてのフォルダー内にあるすべてのフォルダーを 1 つのリストで取得するだけです。つまり、ファイルの保存先を選択できません。

これが少し役立つことを願っています。

于 2013-12-06T15:08:43.700 に答える