2012-09-25 22 views
-2

什麼是確定給定字符串是否是文件名或不在c#中的方法?確定字符串是否是c#中的文件名

+1

你是什麼意思,是一個文件名?我沒有辦法可靠地預測這樣的事情。如果你的意思是「可能並且有一些文件擴展名」,那麼就這麼說:) –

+2

你的意思是字符串是否是* valid *文件名,或者字符串是否與現有文件的名稱匹配? –

+0

是的,我想檢查一個字符串是否可以成爲一個有效的文件名,如果有的話。不是該文件是否在我的系統上找到。 – sarsnake

回答

0

如果你要檢查它是否是一個有效的文件名,你可以嘗試檢查不允許的字符

bool IsValidFilename(string testName) 
{ 
Regex containsABadCharacter = new Regex("[" + Regex.Escape(System.IO.Path.InvalidPathChars) + "]"); 
if (containsABadCharacter.IsMatch(testName) { return false; }; 

return true; 
} 

我認爲這是合適的,因爲文件名可以是相當奇特的,仍然是有效的文件名。

2

,如果你的意思是不給定的字符串存在作爲文件名,然後在這裏你去:

var file = "myfile.txt"; 
var fileExists = System.IO.File.Exists(file); 

如果你的意思是沒有這個字符串符合Windows標準的文件名命名約定,那麼:

var file = "mybadfile<\\/.txt"; 
var invalidFileChars = System.IO.Path.GetInvalidFileNameChars(); 
var isInvalidFilename = invalidFileChars.Any(s => file.Contains(s)); 
1

也許System.IO.File.Exists(givenStr),這取決於你的意思。

如果你想知道如果givenStr沒有非法字符,也許使用!System.IO.Path.GetInvalidFileNameChars().Intersect(givenStr).Any()(只是因爲其他人都在他們的答案中包括這一點)。

1

最好的辦法是測試字符串是否對應於使用System.IO.File.Exists(...)的實際文件名。

文件名不符合規定的模式。 Document.doc將是一個有效的文件名,但asdfasdfasdf234234也是如此。

1

字符串可能的唯一途徑不是是一個有效的文件名是否包含Path.GetInvalidFileNameChars()中的一個字符。只要它沒有任何非法字符,它就是合法的文件名。

如果您好奇,如果在該位置有實際文件,那麼您可以使用File.Exists

相關問題