在c#中创建一个新目录

时间:2015-03-29 19:43:49

标签: c#

我想首先创建一个新目录,然后将文件保存到以下位置C:\ Users \ Paul \ Documents + \ newfolder \ nameOffile.xml。

这可以用C#实现吗?我目前有以下代码,但我似乎无法让它工作

    XDocument doc = new XDocument(rootNode);
    var dateAndTime = DateTime.Now;
    var date = dateAndTime.Date.ToString("dd-MM-yyyy");
    var patWithoutExtension = Path.GetFileNameWithoutExtension(openFileDialog1.FileName);
    string savedFilePah = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));
    var savedFile = savedFilePah + "/" + Directory.CreateDirectory("newFolder") + "/" + patWithoutExtension + "_" + date + ".xml";
    //var savedFile = "C:/tmp/" + patWithoutExtension + "_" + date + ".xml";
    doc.Save(savedFile);
    lblFileUploaded.Text = "Success!";

它继续在doc.save上失败并出现以下错误

  

未处理的类型' System.IO.DirectoryNotFoundException'   发生在System.Xml.dll

中      

其他信息:无法找到路径的一部分   ' C:\用户\保罗\文件\ newFolder \ test2_29-03-2015.xml'

3 个答案:

答案 0 :(得分:1)

问题似乎是Directory.CreateDirectory("newFolder"),它会在工作目录下而不是C:\Users\Paul\Documents下创建文件夹。

另外,作为一种好的做法,我建议将新创建的文件夹存储在专用文件夹中。这样做的好处是双重的 - 你可以在调试过程中轻松地观察这个变量,从而找出所创建文件夹的确切位置,而且,如果抛出异常,你就会知道它的确切位置。它

此外,某些Windows API可能不接受正斜杠(' /'),但除了反斜杠(' \')之外。

答案 1 :(得分:0)

Directory.CreateDirectory("newFolder")未在“用户”文件夹中创建目录:您只是将其传递给"newFolder",因此它不知道您想要的位置夹。它将在您当前的工作文件夹中创建它(例如bin/Debug)。

尝试将整个路径传递给CreateDirectory

string savedFilePath = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
    "newFolder");
Directory.CreateDirectory(savedFilePath);

答案 2 :(得分:0)

您必须指定要创建的目录的完整路径,否则它将在工作(运行)文件夹中创建:

string myDocs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var myDir = Path.Combine(myDocs, "newFolder");
Directory.CreateDirectory(myDir);
var savedFile = Path.Combine(myDir, patWithoutExtension + "_" + date + ".xml");