【发布时间】:2011-03-21 07:18:21
【问题描述】:
我遇到了一些奇怪的事情。我有一个从二进制文件中提取信息的反编译器。我正在提取一系列需要作为二进制文件单独写入磁盘的对象。这些对象是编译到库中的图形模型。对象中嵌入了名称,我需要使用该名称作为文件名。
我正在使用:
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;
}
我意识到我的异常处理不是很好!但是,当要保存的对象之一的名称为 COM2 时,问题就出现了。这导致了异常:
FileStream 不会打开 Win32 设备,例如磁盘分区和磁带机。
所以在我的示例中,我尝试编写一个名为 COM2.mdl 的文件并收到此错误。我真的不想更改这些名称,因为它们是由开发人员嵌入的。
我考虑根据可能导致错误的设备列表测试名称 - 但我真的不知道该列表可能是什么,这也意味着更改我不想做的文件名称.
所以我的问题是:除了使用 FileStream 之外,还有其他方法可以将字节数组写入二进制文件吗?
非常感谢
【问题讨论】:
标签: c# filestream