我遇到了一些奇怪的事情。我有一个反编译器,从二进制文件中提取信息。我正在提取一系列需要单独写入磁盘的对象作为二进制文件。这些对象是编译到库中的图形模型。对象的名称中嵌入了名称,我需要使用该名称作为文件名。写一个具有设备名称的文件
我使用:
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其他二进制文件可能会在这个问题上的方法吗?
非常感谢
我尝试添加\\?\在文件名的FileStream的开始和它返回的路径名例外非法字符,所以我想这UNC路径和的FileStream不保留字列表混合 – ScruffyDuck 2011-03-21 09:09:20
感谢。最后,我决定对这个列表进行测试,如果名称是通过添加后缀来改变名称的话。这对我目前的目标来说已经足够了。 – ScruffyDuck 2011-03-21 09:24:54
+1非常好的信息。我无法弄清楚为什么我不能创建一个名为con.txt的文件。 – 2013-05-20 20:24:20