C#循环冗余校验读取CD流时出现异常

时间:2014-08-26 17:03:01

标签: c# stream disk crc

我想读一张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();
        }
    }

0 个答案:

没有答案