在c#中确定给定字符串是否为文件名的方法是什么?
答案 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;
}
我认为这是合适的,因为文件名可能非常奇特,仍然是有效的文件名。