确定字符串是否是c#中的文件名

时间:2012-09-25 20:59:43

标签: c# file

在c#中确定给定字符串是否为文件名的方法是什么?

5 个答案:

答案 0 :(得分: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 :(得分:1)

也许System.IO.File.Exists(givenStr),取决于你的意思。

如果您想知道givenStr是否没有非法字符,可以使用!System.IO.Path.GetInvalidFileNameChars().Intersect(givenStr).Any()(因为其他人在答案中都包含此内容)。

答案 2 :(得分:1)

您最好的选择是使用System.IO.File.Exists(...)测试字符串是否与实际文件名相对应。

文件名不符合规定的模式。 Document.doc将是有效的文件名,但asdfasdfasdf234234也是如此。

答案 3 :(得分:1)

字符串成为有效文件名的唯一方法是它包含Path.GetInvalidFileNameChars()中的一个字符。只要它没有任何这些非法字符,它就是合法的文件名。

如果您对该位置的实际文件感到好奇,那么您可以使用File.Exists

答案 4 :(得分:0)

如果要检查它是否是有效的文件名,可以尝试检查不允许的字符

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

 return true;
}

我认为这是合适的,因为文件名可能非常奇特,仍然是有效的文件名。