在c#中确定给定字符串是否为文件名的方法是什么?
问问题
149 次
5 回答
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));
于 2012-09-25T21:01:32.837 回答
1
也许System.IO.File.Exists(givenStr)
,取决于你的意思。
如果您想知道是否givenStr
没有非法字符,可以使用!System.IO.Path.GetInvalidFileNameChars().Intersect(givenStr).Any()
(只是因为其他人都在他们的答案中包含了这个)。
于 2012-09-25T21:02:48.933 回答
1
字符串不能成为有效文件名的唯一方法是它是否包含Path.GetInvalidFileNameChars()
. 只要它没有任何非法字符,它就是合法的文件名。
如果您好奇该位置是否有实际文件,那么您可以使用File.Exists
.
于 2012-09-25T21:08:07.560 回答
1
于 2012-09-25T21:06:05.987 回答
0
如果你想检查它是否是一个有效的文件名,你可以尝试检查不允许的字符
bool IsValidFilename(string testName)
{
Regex containsABadCharacter = new Regex("[" + Regex.Escape(System.IO.Path.InvalidPathChars) + "]");
if (containsABadCharacter.IsMatch(testName) { return false; };
return true;
}
我认为这是合适的,因为文件名可能非常奇特并且仍然是有效的文件名。
于 2012-09-25T21:12:13.307 回答