在7z.dll中提取ISO文件 - 内存异常

时间:2013-11-20 10:17:23

标签: c# iso 7zip sevenzipsharp

我现在使用了两个包装器来尝试提取ISO文件。但没有成功

我尝试了sevenzipsharpC-NET-Interface-for-7-Zip-Archive-DLLs但他们都给出了同样的例外。 ISO文件包含.vob文件(电影),ISO文件的总大小为4.35GB。当我尝试从中提取1GB的单个.vob文件时,我得到了内存异常。

我实际上想要提取.vob文件,然后通过Upnp / DLNA

传输它们
    SevenZipExtractor Extractor;
    try
      {
         String[] FileNames = RawFileExtractor(path, out Extractor);
         Extractor.ExtractFile(FileNames[8], ms) //the 1GB file: exception is here
      }
    catch{}
    Extractor.Dispose();

1 个答案:

答案 0 :(得分:0)

     Extractor.ExtractFile(FileNames[8], ms)

无法看到“ms”,但可以在MemoryStream中猜到。使用jiggabyte文件确实无法正常工作。当程序作为32位进程运行时,非常可能会出现OutOfMemoryException。很容易固定在您的机器上,您可以达到马力。 Project + Properties,Build选项卡,选择AnyCPU,如果你看到它,请取消选中“Prefer 32-bit”。

如果他没有64位操作系统,仍然非常浪费并且不能确保在用户的计算机上工作。很不清楚你实际上在使用那个MemoryStream做了什么,你应该使用FileStream的高概率,因此它被直接提取到磁盘。您将使用4096字节而不是千兆字节。视频播放器不关心它是从内存还是磁盘播放。还要回顾一下压缩视频的智慧,它已经被编码器压缩了。