指定された文字列がc#のファイル名であるかどうかを判断する方法は何ですか?
5 に答える
指定された文字列がファイル名として存在することを意味する場合は、次のようになります。
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));
たぶんSystem.IO.File.Exists(givenStr)
、あなたが何を意味するかに応じて。
givenStr
違法な文字がないかどうかを知りたい場合は、おそらく使用してください!System.IO.Path.GetInvalidFileNameChars().Intersect(givenStr).Any()
(他のすべての人がこれを回答に含めているからです)。
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
.
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.