2012-02-14 154 views
1

以下声明有什么问题?XmlTextWriter路径错误?

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

当我尝试上述声明它提供了以下错误

给出的路径的格式不支持。

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

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

回答

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); 
2

文件名不能包含各种符号,:是非法字符之一。尝试使用这样的事情,而不是:

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

但是当我尝试使用'doc.Load(@“D:\ project \ data.xml”);'它没有给出任何错误,而'doc'是'XmlDocument'数据类型。 – 2012-02-14 11:05:31

+1

呃,对不起,我应该更具体些。冒号只允许在驱动器号后面的文件路径中,而不能在文件夹或文件名中。 – 2012-02-14 11:08:02

1

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

找出哪些是你的语言环境产生的非法字符,或者使用一个明确的格式DateTime.ToString(),或通过应用的ToString将其删除()更换(“:”,“”)。等

+0

那我该怎么做呢?我的系统区域设置现在设置为US – 2012-02-14 11:10:23

+0

,现在当我将日期和时间转换为字符串时,会出现此错误:'找不到路径的一部分'D:\ project \ data \ 14022012 \ 161428.xml'。 – 2012-02-14 11:20:39