-2

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

4

5 回答 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 回答