1

除了为每种类型的端口做这样的疯狂循环之外:

bool IsGoodFileName(string file_name)
{
   for (int i = 0; i < 256; i++)
      if (string.Compare(file_name, "COM" + i) == 0)
         return false;

   return true;
}
4

1 回答 1

1

根据文档,您不必检查端口 9 之外的这些,因此您可以执行以下操作:

static bool IsGoodFileName(string file_name)
{
    var reserved = new[]
        {
            "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9",
            "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9"
        };
    var fileName = Path.GetFileNameWithoutExtension(file_name);
    //TODO: handle case where fileName is null.
    return !reserved.Any(r => fileName.Equals(r, StringComparison.InvariantCultureIgnoreCase));
}

事实上,Windows 资源管理器允许您创建一个名为 COM20 的文件,因此我认为您不需要检查这些文件。

于 2013-06-14T16:46:45.850 回答