コード例 #1
0
ファイル: BSAReader.cs プロジェクト: bahaynes/wabbajack
        public void CopyDataTo(Stream output)
        {
            using (var in_file = File.OpenRead(_bsa._fileName))
                using (var rdr = new BinaryReader(in_file))
                {
                    rdr.BaseStream.Position = _dataOffset;

                    if (_bsa.HeaderType == VersionType.SSE)
                    {
                        if (Compressed)
                        {
                            var r = LZ4Stream.Decode(rdr.BaseStream);
                            r.CopyToLimit(output, (int)_originalSize);
                        }
                        else
                        {
                            rdr.BaseStream.CopyToLimit(output, (int)_onDiskSize);
                        }
                    }
                    else
                    {
                        if (Compressed)
                        {
                            using (var z = new InflaterInputStream(rdr.BaseStream))
                            {
                                z.CopyToLimit(output, (int)_originalSize);
                            }
                        }
                        else
                        {
                            rdr.BaseStream.CopyToLimit(output, (int)_onDiskSize);
                        }
                    }
                }
        }