-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
于 2012-09-25T21:06:05.987 に答える
1

The only way a string could not be a valid filename is if it included one of the characters in Path.GetInvalidFileNameChars(). As long as it doesn't have any of those illegal characters it is a legal file name.

If your curious if there is an actual file at that location then you can use File.Exists.

于 2012-09-25T21:08:07.560 に答える
0

if you want to check if it's a valid filename, you can try checking for disallowed characters

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

 return true;
}

I think this is suitable, because filenames can be quite exotic and still be valid filenames.

于 2012-09-25T21:12:13.307 に答える