Me he topado con algo curioso. Tengo un descompilador que extrae información de un archivo binario. Estoy extrayendo una serie de objetos que necesito escribir por separado en el disco como archivos binarios. Estos objetos son modelos gráficos compilados en una biblioteca. Los objetos tienen nombres incrustados en ellos y necesito usar ese nombre como el nombre del archivo.Escribiendo un archivo que tiene el nombre de un dispositivo
estoy usando:
try {
// Open file for reading .
using (var fileStream = new FileStream(fileName, FileMode.Create, FileAccess.Write)) {
// Writes a block of bytes to this stream using data from a byte array. .
fileStream.Write(byteArray, 0, byteArray.Length);
// close file stream .
fileStream.Close();
}
return true;
}
catch (Exception exception) {
return false;
}
realizo mis manejo de excepciones no es muy grande! Sin embargo, el problema apareció cuando uno de los objetos para guardar tenía el nombre COM2 Esto provocó una excepción:
FileStream no abrirá los dispositivos Win32 como las particiones de disco y las unidades de cinta.
Por lo tanto, en mi ejemplo, intento escribir un archivo llamado COM2.mdl y obtener este error. Realmente no quiero tener que cambiar estos nombres ya que están integrados por el desarrollador.
Consideré probar los nombres en una lista de dispositivos que pueden causar el error, pero realmente no sé cuál podría ser esa lista y también significaría cambiar el nombre del archivo que no quiero hacer.
Así que mi pregunta: ¿Hay alguna manera de escribir una matriz de bytes como un archivo binario distinto de FileStream que podría superar este problema?
Muchas gracias
Intenté agregar \\? \ Al comienzo del nombre del archivo para FileStream y devolvió un carácter ilegal en la excepción del nombre de ruta así que supongo que las rutas UNC y FileStream no se mezclan – ScruffyDuck
Gracias por la lista de palabras reservadas. Al final, decidí probar contra esta lista y si el nombre está allí para cambiar el nombre agregando un sufijo. Eso funciona bastante bien para mi propósito a partir de ahora. – ScruffyDuck
+1 Excelente información. No pude entender por qué no pude crear un archivo llamado con.txt. –