Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 使用FolderPicker将XElement保存到UWP中的根目录_Xml_Visual Studio 2015_Uwp_Filestream - Fatal编程技术网

Xml 使用FolderPicker将XElement保存到UWP中的根目录

Xml 使用FolderPicker将XElement保存到UWP中的根目录,xml,visual-studio-2015,uwp,filestream,Xml,Visual Studio 2015,Uwp,Filestream,我犯了一个奇怪的错误,我无法理解 我一直在UWP应用程序中使用FolderPicker来允许用户选择文件夹,并且我需要允许将xml文件保存到所选目录。在许多情况下,这将是thumb驱动器的根文件夹 当我选择驱动器的子文件夹(“G:\Newfolder”)时,我的当前代码可以正常工作,但当我选择根目录(“G:\”)时失败 我得到的错误声称我没有正确的访问权限,但当我意外地错误地跳过斜杠时,我得到了相同的错误,因此我不信任错误代码 我不可能保存到拇指驱动器的根吗?我还有别的错误吗 代码如下: pri

我犯了一个奇怪的错误,我无法理解

我一直在UWP应用程序中使用FolderPicker来允许用户选择文件夹,并且我需要允许将xml文件保存到所选目录。在许多情况下,这将是thumb驱动器的根文件夹

当我选择驱动器的子文件夹(“G:\Newfolder”)时,我的当前代码可以正常工作,但当我选择根目录(“G:\”)时失败

我得到的错误声称我没有正确的访问权限,但当我意外地错误地跳过斜杠时,我得到了相同的错误,因此我不信任错误代码

我不可能保存到拇指驱动器的根吗?我还有别的错误吗

代码如下:

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);
                }
            });
        }
    }

`这不是一个答案,只是一个一般性的观察:

在组合路径时,不要手动输入斜杠,而是使用

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

为您节省一些潜在的荷马·辛普森“doh”时刻:)

谢谢!一旦我有了足够的声誉,我对这件事的投票就会有意义。。。我想我在进入“勇敢的新世界”方面仍然进展缓慢,而且我在做一些错误的老式方式的事情。不过,这让我很担心——我现在确信我没有走错路,这意味着写到底似乎真的有一些抑制作用/