2012-02-14 196 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