2014-12-02 111 views
2

根據http://msdn.microsoft.com/en-us/library/system.io.path.getinvalidpathchars%28v=vs.110%29.aspxPath.GetInvalidFileNameChars()應該提供以下輸出GetInvalidFileNameChars()不包含所有非法字符

// Note: Some characters may not be displayable on the console. 
// The output will look something like: 
// 
// The following characters are invalid in a path: 
// Char Hex Value 
// ",  0022 
// <,  003C 
// >,  003E 
// |,  007C 
// ... 
// 
// The following characters are invalid in a filename: 
// Char Hex Value 
// ",  0022 
// <,  003C 
// >,  003E 
// |,  007C 
// ... 

但是我只得到

Char Hex Value 
, 0000 
/, 002F 

http://ideone.com/UdRbCC

什麼繼續?

+3

這取決於環境。這就是全部的原因推遲此任務的庫函數,而不是硬編碼它的基礎上顯然,運行該代碼的機器具有相當寬鬆的文件名/路徑限制 – Servy 2014-12-02 15:49:15

+1

「輸出看起來像* ...的東西*」意味着它說什麼,相同的頁面也注意到「全套無效字符可以因文件系統而異。「 – 2014-12-02 15:49:44

+0

我有一種感覺它可能取決於環境。然而,如果我去掉無效字符(從'Path.GetInvalidFileNameChars()')並執行'Path.GetExtension(Filename)',它仍會拋出無效字符異常。讓我成爲一隻傷心的熊貓! – 2014-12-02 16:02:34

回答

3

從你鏈接的文章:

數組此方法返回不能保證包含 一套完整的文件和目錄 名稱中的無效字符。全套無效字符可能因文件系統而異。例如,對於 示例,在基於Windows的桌面平臺上,無效路徑字符 可能包含ASCII/Unicode字符1到31以及引號 (「),小於(<),大於(>),管道(|) ,退格(\ b)中,空 (\ 0)和標籤(\ t)。

+1

「根據文件系統而異」部分很重要。就平臺本身而言,字符的有效性並不意味着它在每個安裝的文件系統中都是有效的。爲了獲得額外的樂趣,它也可以是相反的方式,文件系統可以允許比平臺更多的字符,因此您可能無法使用包含無效字符的文件。 – CodesInChaos 2014-12-02 16:43:30

相關問題