Ho incontrato qualcosa di curioso. Ho un decompilatore che estrae le informazioni da un file binario. Sto estraendo una serie di oggetti che ho bisogno di scrivere separatamente su disco come file binari. Questi oggetti sono modelli grafici compilati in una libreria. Gli oggetti hanno nomi incorporati in essi e ho bisogno di usare quel nome come nome del file.Scrittura di un file con il nome di un dispositivo
sto 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;
}
mi rendo conto la mia gestione delle eccezioni non è grande! Tuttavia il problema si presentava quando uno degli oggetti da salvare aveva il nome COM2 Ciò provocava un'eccezione:
FileStream non apre i dispositivi Win32 come le partizioni del disco e le unità nastro.
Quindi nel mio esempio sto cercando di scrivere un file chiamato COM2.mdl e ottenere questo errore. Non voglio davvero dover cambiare questi nomi poiché sono incorporati dallo sviluppatore.
Ho considerato di testare i nomi in base a un elenco di dispositivi che potrebbero causare l'errore, ma non so davvero quale potrebbe essere l'elenco e significherebbe anche cambiare il nome del file che non desidero fare.
Quindi la mia domanda: esiste un modo per scrivere un array di byte come file binario diverso da FileStream che potrebbe superare questo problema?
Molte grazie
Ho provato ad aggiungere \\? \ All'inizio del nome file per FileStream e ha restituito un carattere non valido nell'eccezione del percorso, quindi suppongo che percorsi UNC e FileStream non si combinino – ScruffyDuck
Grazie per l'elenco di parole riservate. Alla fine ho deciso di testare contro questa lista e se il nome è lì per cambiare il nome aggiungendo un suffisso. Funziona abbastanza bene per il mio scopo sin d'ora. – ScruffyDuck
+1 Grandi informazioni. Non riuscivo a capire perché non potevo creare un file chiamato con.txt. –