Schreiben einer Datei mit dem Namen eines GerätsC#

Ein Treffpunkt für C#-Programmierer
Guest
 Schreiben einer Datei mit dem Namen eines Geräts

Post by Guest »

Ich bin auf etwas Merkwürdiges gestoßen. Ich habe einen Dekompiler, der Informationen aus einer Binärdatei extrahiert. Ich extrahiere eine Reihe von Objekten, die ich separat als Binärdateien auf die Festplatte schreiben muss. Bei diesen Objekten handelt es sich um grafische Modelle, die in einer Bibliothek zusammengestellt sind. In die Objekte sind Namen eingebettet, und ich muss diesen Namen als Dateinamen verwenden.

Ich verwende:

Code: Select all

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;
}
Mir ist klar, dass meine Ausnahmebehandlung nicht großartig ist! Das Problem trat jedoch auf, wenn eines der zu speichernden Objekte den Namen COM2 hatte. Dies verursachte eine Ausnahme:

FileStream öffnet keine Win32-Geräte wie Festplattenpartitionen und Bandlaufwerke.

In meinem Beispiel versuche ich also, eine Datei namens COM2.mdl zu schreiben und erhalte diesen Fehler. Ich möchte diese Namen wirklich nicht ändern müssen, da sie vom Entwickler eingebettet wurden.

Ich habe überlegt, die Namen anhand einer Liste von Geräten zu testen, die den Fehler verursachen könnten - aber ich weiß wirklich nicht, wie diese Liste aussehen könnte, und außerdem würde es bedeuten, den Namen der Datei zu ändern, was ich nicht tun möchte.

Also mein Frage: Gibt es eine andere Möglichkeit, ein Byte-Array als Binärdatei zu schreiben als mit FileStream, die möglicherweise überwunden wird? dieses Problem?

Vielen Dank

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post