将文件保存到Path.Combine目录中

时间:2018-05-12 17:19:44

标签: c# xmldocument path-combine

有人可以建议我如何将文件保存到Path.Combine目录中吗? 请在下面找到我的一些代码。

创建目录:

string wholesalePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), mainFolder, wholesaleFolder);
Directory.CreateDirectory(wholesalePath);

我还指定了一个应该使用的文件名。

 string fileName = "xmltest.xml";

然后我重新创建了一个" wholesalePath"包括文件名:

wholesalePath = Path.Combine(wholesalePath, fileName);

执行的几行简单代码:

        XmlDocument doc = new XmlDocument();
        string oneLine = "some text";
        doc.Load(new StringReader(oneLine));
        doc.Save(fileName);
        Console.WriteLine(doc);

我遇到的问题是,当我使用doc.Save(fileName)时,我在VisualStudio项目目录中获取文件,这是错误的目录。

然而,当我使用doc.Save(wholesalePath)时,应该创建文件" xmltest.xml"实际上是在" wholesalePath"。

中创建的另一个目录

我会很感激任何建议。

2 个答案:

答案 0 :(得分:0)

如评论中所述,您需要在添加wholesalePath之前使用fileName创建目录。添加wholesalePath后,您需要使用fileName来保存文件。我测试了以下代码,它按预期工作:

void Main()
{
    string mainFolder = "StackOverflow";
    string wholesaleFolder = "Test";
    string wholesalePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), mainFolder, wholesaleFolder);
    Directory.CreateDirectory(wholesalePath);
    string fileName = "xmltest.xml";
    wholesalePath = Path.Combine(wholesalePath, fileName);
    XmlDocument doc = new XmlDocument();
    string oneLine = "<root></root>";
    doc.Load(new StringReader(oneLine));
    doc.Save(wholesalePath);
}

它在名为xmltest.xml的桌面文件夹中创建名为StackOverflow\Test的文件。

这会有效,但我建议为文件夹和文件路径创建单独的变量。这将使代码更清晰,因为每个变量只有一个目的,并且不太可能使这些错误。例如:

void Main()
{
    string mainFolder = "StackOverflow";
    string wholesaleFolder = "Test";
    string fileName = "xmltest.xml";
    string destinationFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), mainFolder, wholesaleFolder);
    string destinationFilePath = Path.Combine(destinationFolder, fileName);

    Directory.CreateDirectory(destinationFolder);
    XmlDocument doc = new XmlDocument();
    string oneLine = "<root></root>";
    doc.Load(new StringReader(oneLine));
    doc.Save(destinationFilePath);
}

答案 1 :(得分:0)

好人,

非常感谢您的反馈和快速翻身。正如您所提到的,我之前正在更改wholesalePath的操作,如果实际创建的话。

void Main()
{
    string mainFolder = "StackOverflow";
    string wholesaleFolder = "Test";
    string wholesalePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), mainFolder, wholesaleFolder);

    wholesalePath = Path.Combine(wholesalePath, fileName);

    Directory.CreateDirectory(wholesalePath);
    string fileName = "xmltest.xml";
    XmlDocument doc = new XmlDocument();
    string oneLine = "<root></root>";
    doc.Load(new StringReader(oneLine));
    doc.Save(wholesalePath);
}

现在我已经将执行顺序更改为Directory.CreateDirectory(wholesalePath)作为第一个,然后wholesalePath = Path.Combine(wholesalePath, fileName)一切都像魅力一样。非常感谢你的踌躇。

非常感谢。