我正在做一个Outlook插件,它会自动保存邮件到文件服务器收到时。这部分代码根本不会做它要求做的事情!C#代码不创建目录或保存文件
//RelevantDirectory[0] is the root folder where I want to save stuff, and sits on a mapped network drive where I have full admin permissions.
System.IO.Directory.CreateDirectory(RelevantDirectory[0] + "\\Email Correspondence\\");
System.IO.Directory.CreateDirectory(RelevantDirectory[0] + "\\Email Correspondence\\Outgoing");
mail.SaveAs(RelevantDirectory[0] + "\\Email Correspondence\\Outgoing\\" + mail.SenderName + " - " + string.Format("text-{0:yyyy-MM-dd_hh-mm-ss-tt}", mail.ReceivedTime) + ".msg");
System.Windows.Forms.MessageBox.Show(System.IO.File.Exists(RelevantDirectory[0] + "\\Email Correspondence\\Outgoing\\" + mail.SenderName + " - " + string.Format("text-{0:yyyy-MM-dd_hh-mm-ss-tt}", mail.ReceivedTime) + ".msg").ToString()); //returns True!
MessageBox返回True,但该文件实际上并不存在! CreateDirectory代码也不会创建目录 - 我确信程序中的文件路径是正确的。我从这个link了解到,这可能与文件系统虚拟化有关。如果是这样,我该如何解决这个问题?
还有一点是,如果我点mail.aveAs到桌面文件夹,它将其保存。
编辑由于一些离奇的原因,使用Path.Combine()
工作。感谢Sinatr。感谢大家的提示。
尝试在创建路径时使用'Path.Combine'。 – Sinatr 2014-10-10 08:40:41
你调试了你的代码吗? 'RelevantDirectory [0]'的价值是什么? – 2014-10-10 08:40:58
你不需要创建每个文件夹,只需使用'System.IO.Directory.CreateDirectory(RelevantDirectory [0] +“\\ Email Correspondence \\ Outgoing”);'将创建你所需的文件夹结构。 – Bolu 2014-10-10 08:44:56