Validating a filename in c#
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
How check if given string is legal (allowed) file name under Windows?
我是stackoverflow的新手。 我知道这是一个愚蠢的问题,但我被困在其中。 我想验证文件名,以便它只接受合法路径。 我试过以下代码:
1 2 3 4 5 | if (txtFileName.IndexOfAny(System.IO.Path.GetInvalidFileNameChars()) != -1) { MessageBox.Show("The filename is invalid"); return; } |
然而,它有用,我有点困惑它是否会完全工作,所以我也想知道其他答案。 我想我们也可以使用正则表达式验证文件名。 任何帮助都会很棒。
这将按预期工作。
没有必要发明一个正则表达式来执行此操作,就好像无效字符集一直在更改,您的代码将过时,而此调用仍将按预期工作。
试试这个:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | bool bOk = false; try { new System.IO.FileInfo(fileName); bOk = true; } catch (ArgumentException) { } catch (System.IO.PathTooLongException) { } catch (NotSupportedException) { } if (!bOk) { // ... } else { // ... } |
这是正确的方法。 将来,如果您的程序将被移植到不同的操作系统,它将继续工作。 手工制作的解决方案效果会较差。
这取决于你究竟在做什么。
如果它只是您正在验证的文件名,那么这将起作用。 框架函数将检查特定操作系统的无效文件名字符,并将随.NET框架一起更新。 而你的正则表达式不会。
虽然,如果你想检查它是否是一个有效的路径,那么我猜你还有更多的事情要做。 就像它是一个有效的驱动器号,路径,文件夹等。