我想读一张CD将其内容写入文件,但在对输出文件进行一些读/写操作后,我收到了IOException(数据错误循环冗余校验)。
我试图制作一个ISO创作者程序,而我读过的磁盘是500 Mo游戏CD,在阅读了大约1,9 Mo的数据之后出现异常。 CD没有破损且完全可用。
我不知道它们是否受到块大小或缓冲区大小的限制(使用4096字节)。
我对解决这个问题的想法或经验非常感兴趣。
修改
我每张CD都会出现此错误,而不仅仅是这张。并且它没有被打破,因为我在开始制作程序以安装它包含的游戏之前使用它。
我使用此代码阅读CD:
const int BUFFER_SIZE = 4096;
private void MakeISO()
{
_HDEV = NativeMethods.CreateFileR(DRIVE_NAME);
string targetFile = TARGET + "\\" + NAME;
try
{
_FSR = new FileStream(_HDEV, FileAccess.Read, BUFFER_SIZE);
_FSW = new FileStream(targetFile, FileMode.Create, FileAccess.Write, FileShare.None, BUFFER_SIZE);
byte[] buffer = new byte[BUFFER_SIZE];
int length;
while ((length = _FSR.Read(buffer, 0, buffer.Length)) > 0)
{
_FSW.Write(buffer, 0, buffer.Length);
}
// Don't work either
//do
//{
// _FSR.Read(buffer, 0, BUFFER_SIZE);
// _FSW.Write(buffer, 0, BUFFER_SIZE);
//}
//while (_fsw.Position == _fsr.Position);
}
catch (Exception ex)
{
//
}
finally
{
CloseAll();
}
}