7

可能重复:
如何检查给定的字符串是否在 Windows 下是合法的(允许的)文件名?

我是stackoverflow的新手。我知道这是一个愚蠢的问题,但我陷入了困境。我想验证一个文件名,以便它应该只接受合法路径。我试过下面的代码:

if (txtFileName.IndexOfAny(System.IO.Path.GetInvalidFileNameChars()) != -1) 
{   
   MessageBox.Show("The filename is invalid");   
   return; 
} 

它起作用了,但是,我有点困惑它是否会完全起作用,所以我也想知道其他答案。我认为我们也可以使用正则表达式来验证文件名。任何帮助都会很棒。

4

4 回答 4

3

这将按预期工作。

无需发明正则表达式来执行此操作,就好像您的代码更改的无效字符集将过时,而此调用仍将按预期工作。

于 2012-07-30T08:08:05.420 回答
1

这是正确的方法。将来,如果您的程序将被移植到不同的操作系统,它将继续工作。手工制作的解决方案将不太有效。

于 2012-07-30T08:09:31.997 回答
1

尝试这个:

bool bOk = false; 
try 
{ 
    new System.IO.FileInfo(fileName); 
    bOk = true; 
} 
catch (ArgumentException) 
{ 
} 
catch (System.IO.PathTooLongException) 
{ 
} 
catch (NotSupportedException) 
{ 
} 

if (!bOk) 
{ 
    // ... 
} 
else 
{ 
    // ... 
} 
于 2012-07-30T08:12:47.450 回答
0

这取决于你在做什么。如果它只是您正在验证的文件名,那么这将起作用。框架函数将为您的特定操作系统检查无效的文件名字符,并将与 .NET 框架一起更新。而你的正则表达式不会。

虽然,如果您想检查它是否是有效路径,那么我猜您还需要做一些事情。比如它是一个有效的驱动器号、路径、文件夹等。

于 2012-07-30T08:09:29.507 回答