C# XmlTextWriter路径错误?

C# XmlTextWriter路径错误?,c#,asp.net,C#,Asp.net,下面的说法有什么不对 XmlTextWriter writer = new XmlTextWriter(@"D:\project\data\" + System.DateTime.Today + @"\" + System.DateTime.Now + ".xml", null); 当我尝试上面的语句时,它给出了以下错误 不支持给定路径的格式 描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误

下面的说法有什么不对

XmlTextWriter writer = new XmlTextWriter(@"D:\project\data\" + System.DateTime.Today + @"\" + System.DateTime.Now + ".xml", null);
当我尝试上面的语句时,它给出了以下错误

不支持给定路径的格式

描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源

异常详细信息:System.NotSupportedException:不支持给定路径的格式


文件名不能包含各种符号,
是非法字符之一。请尝试使用类似以下内容:

String.Format(@"D:\project\data\{0:yyyyMMdd}\{0:HHmmssfff}.xml", DateTime.Now);

文件名不能包含各种符号,
是非法字符之一。请尝试使用类似以下内容:

String.Format(@"D:\project\data\{0:yyyyMMdd}\{0:HHmmssfff}.xml", DateTime.Now);

根据您的语言设置(区域设置),日期或时间格式可能包含文件名的非法字符。例如,德语时间格式包含冒号“:”,英语日期格式包含“/”,这两种格式在文件名或目录名中都是不允许的


找出由您的区域设置生成的非法字符,并在中使用显式格式,或通过应用ToString()将其删除。替换(“:”,“”)等。

根据您的语言设置(区域设置),日期或时间格式可能包含文件名的非法字符。例如,德语时间格式包含冒号“:”,英语日期格式包含“/”,这两种格式在文件名或目录名中都是不允许的


找出哪些非法字符是由您的区域设置生成的,或者在中使用显式格式,或者通过应用ToString()将其删除。替换(“:”,“”)等。

除了非法字符,您尝试执行的操作是不可能的,原因很简单:只要
XmlTextWriter
将创建不存在的文件,它不会创建目录。这就是你想要做的:

XmlTextWriter writer = new XmlTextWriter(
    /* your root path */ @"D:\project\data\" +
    /* NEW directory  */ System.DateTime.Today + @"\" +
    /* new file name  */ System.DateTime.Now + ".xml", null); 
您需要手动为给定日期创建目录:

var path = string.Format(@"D:\project\data\{0:yyyyMMdd}", DateTime.Now);
// if directory already exists nothing will happen
Directory.CreateDirectory(path);
或将日期合并到文件名中:

var fileName = string.Format(@"D:\project\data\{0:yyyyMMdd}_{0:HHmmssfff}.xml",
    DateTime.Now);

撇开非法字符不谈,您试图做的事情是不可能的,原因很简单:只要
XmlTextWriter
将创建文件(如果文件不存在),它就不会创建目录。这就是你想要做的:

XmlTextWriter writer = new XmlTextWriter(
    /* your root path */ @"D:\project\data\" +
    /* NEW directory  */ System.DateTime.Today + @"\" +
    /* new file name  */ System.DateTime.Now + ".xml", null); 
您需要手动为给定日期创建目录:

var path = string.Format(@"D:\project\data\{0:yyyyMMdd}", DateTime.Now);
// if directory already exists nothing will happen
Directory.CreateDirectory(path);
或将日期合并到文件名中:

var fileName = string.Format(@"D:\project\data\{0:yyyyMMdd}_{0:HHmmssfff}.xml",
    DateTime.Now);

但是当我尝试使用
doc.Load(@“D:\project\data.xml”)
它没有给出任何错误,而
doc
是一个
XmlDocument
数据类型。嘿,对不起,我应该更具体一点。冒号只允许出现在驱动器号后面的文件路径中,而不允许出现在文件夹或文件名中。但是,当我尝试使用
doc.Load(@“D:\project\data.xml”)时,冒号才被允许出现在文件路径中
它没有给出任何错误,而
doc
是一个
XmlDocument
数据类型。嘿,对不起,我应该更具体一点。冒号只允许出现在驱动器号之后的文件路径中,而不允许出现在文件夹或文件名中。那么我该怎么做呢?当我将日期和时间转换为字符串时,我的系统区域设置设置为USnow,这会导致此错误
找不到路径“D:\project\data\14022012\161428.xml”的一部分。
那么我该怎么做?当我将日期和时间转换为字符串时,我的系统区域设置设置为USnow,这会导致此错误
找不到路径“D:\project\data\14022012\161428.xml”的一部分。