2016-05-19 8 views
1

私は理解できない奇妙なエラーに来ているとUWPにルートに保存のXElementが... FolderPicker

私は、フォルダを選択するようにユーザーを許可するようにUWPアプリでFolderPickerを使用してきたし、 xmlファイルを選択したディレクトリに保存する必要があります。多くの場合、これはサムドライブのルートフォルダになります。

私は(「G:\新規フォルダ」)ドライブのサブフォルダを選択したときに私が持っている現在のコードが正常に動作しますが、私はルート(「G:\」)を選択したときに失敗し

Iエラー私が適切なアクセス権を持っていないという主張を得るが、誤ってスラッシュを間違ってエスケープしたときと同じエラーが発生するため、エラーコードが信頼できない。

サムドライブのルートに保存することはできませんか?私が作っている間違いがもうありますか?ここで

はコードです:

private async void buttonSaveToRoot_Click(object sender, RoutedEventArgs e) 
    { 
     FolderPicker folderPicker = new FolderPicker(); 
     folderPicker.SuggestedStartLocation = PickerLocationId.Desktop; 
     folderPicker.ViewMode = PickerViewMode.List; 
     folderPicker.FileTypeFilter.Add(".xml"); 



     //OK, imagine me picking the root of my thumb drive - "G:\" 
     StorageFolder pickedFolder = await folderPicker.PickSingleFolderAsync(); 

     if (pickedFolder != null) 
     { 
      Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.AddOrReplace("PickedFolderToken", pickedFolder); 
      XElement xml = new XElement("Food"); 
      xml.Add (new XElement("Oranges", new XAttribute("Type", "Fruit"))); 
      xml.Add(new XElement("Apples", new XAttribute("Type", "Fruit"))); 
      xml.Add(new XElement("Potatoes", new XAttribute("Type", "Vegetables"))); 
      xml.Add(new XElement("Carrots", new XAttribute("Type", "Vegetables"))); 

      string savePath = pickedFolder.Path + @"\test.xml"; 
      savePath = savePath.Replace(@"\\", @"\") ; 

      await Task.Run(() => 
      { 
       Task.Yield(); 
       using (FileStream fs = File.Create(savePath)) 
       { 
        xml.Save(fs); 
       } 
      }); 
     } 
    } 

`

答えて

1

これが答え、単に一般的な観測ではありません:あなたはパスを結合しているときはいつでも

、手動でスラッシュを入力していませんが、代わりに、使用する

var savePath = Path.Combine(pickedFolder.Path, "test.xml"); 

あなたにいくつかの潜在的なホーマーシンプソン "doh"の瞬間を保存しますs:

+0

ありがとうございました!いったん私が十分な評判を得ていれば、私のアップヴォートは何かを期待します。私はまだ「ブレイブニューワールド」に入るのが遅いと思います。私は古風なやり方で間違いをしています。 私はパスを間違っていないと確信しています。つまり、実際にルートに書き込むことを阻害するようです。 :/ –

関連する問題