Esto no es tan simple como comprobar si el nombre de archivo contiene ningún de System.IO.Path.GetInvalidFileNameChars (como se menciona en un par de otras respuestas ya).
Por ejemplo, si alguien ingresa un nombre que no contiene caracteres inválidos pero tiene 300 caracteres (es decir, mayor que MAX_PATH) - esto no funcionará con ninguna de las API de archivos .NET, y solo tiene soporte limitado en el resto de ventanas usando la sintaxis \? \ path. Necesita contexto en cuanto a la duración del resto de la ruta para determinar cuánto tiempo puede ser el nombre del archivo. Puede encontrar more information about this type of thing here.
En última instancia, todos sus cheques pueden confiablemente hacer es comprobar que el nombre de un archivo no es válido, o darle una estimación razonable de si es válido. Es virtualmente imposible probar que el nombre del archivo es válido sin realmente intentar usarlo. (E incluso entonces tiene problemas como si ya existe? Puede ser un nombre de archivo válido, pero ¿es válido en su escenario tener un nombre duplicado?)
simple right parenthesy error de colocación en la declaración if, pero gracias increíble! – Balk
Entonces, "C ::::::::" es un nombre de archivo válido? – Andrew
Andrew: no, esto es solo una revisión básica aproximada para los personajes ... Hay muchas otras razones para acceder a un archivo con 'proposalFilename' puede fallar: archivo (no existe), solo lectura, ruta demasiado larga, directorio doesn 't exist, el nombre es dos archivos del dispositivo (como' nul 'o' prn ') etc. –