XmlTextWriter路径错误?

时间:2012-02-14 11:00:19

标签: c# asp.net

以下陈述有什么问题?

XmlTextWriter writer = new XmlTextWriter(@"D:\project\data\" + System.DateTime.Today + @"\" + System.DateTime.Now + ".xml", null);

当我尝试上述语句时,它会出现以下错误

  

不支持给定路径的格式。

     

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

     

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

3 个答案:

答案 0 :(得分:3)

除了非法字符之外,你想要做的事情是不可能的,原因很简单:只要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);

答案 1 :(得分:2)

文件名不能包含各种符号,:是非法字符之一。尝试使用类似的东西:

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

答案 2 :(得分:1)

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

找出您的语言环境生成了哪些非法字符,并在DateTime.ToString()中使用显式格式,或者通过应用ToString()删除它们。替换(“:”,“”)等。