我想首先创建一个新目录,然后将文件保存到以下位置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'
答案 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");