我想在我的应用程序中包含批处理文件重命名功能.用户可以键入目标文件名模式和(在替换模式中的一些通配符之后)我需要检查它是否是Windows下的合法文件名.我试过使用正则表达式,[a-zA-Z0-9_]+但它不包括来自各种语言的许多国家特定字符(例如变音符号等).做这种检查的最佳方法是什么?
System.IO命名空间中是否有一个检查文件名有效性的方法?
例如,C:\foo\bar将验证,:"~-*不会
或者有点棘手,X:\foo\bar会验证系统上是否有X:驱动器,否则不会.
我想我自己可以编写这样的方法,但我对内置的方法更感兴趣.
当文件路径无效时,第三方库会出错.我们试图处理这种情况File.Exists(),认为当文件路径包含无效字符时它将返回false,但它返回true.
这很奇怪(见额外的空格和时期)
string wrong = "myfolder1\\myfolder2\\myfile.txt .";
bool x = File.Exists(wrong);
Run Code Online (Sandbox Code Playgroud)
有没有办法清理文件路径?
new FileInfo(wrong).Name 不清理它.
我们的主要目的是在将文件路径发送到第三方库之前可靠地确定文件路径是否有效.我几乎觉得这个问题很愚蠢,因为我认为File.Exists()应该这样做.
(我们在.NET 4.0上)