public void ExtractFileToMemory(string filename, ref byte[] outputBytes) { Archiver archiver = this.TrophyList.Find((Predicate <Archiver>)(b => Operators.CompareString(Strings.Mid(b.Name.ToUpper(), 1, Strings.Len(filename.ToUpper())), filename.ToUpper(), false) == 0)); if (archiver == null) { return; } byte[] numArray = new byte[checked ((int)(archiver.Size - 1L) + 1)]; using (FileStream fileStream = new FileStream(this._inputfile, FileMode.Open, FileAccess.Read, FileShare.Read)) { fileStream.Seek(archiver.Offset, SeekOrigin.Begin); fileStream.Read(numArray, 0, numArray.Length); using (MemoryStream memoryStream = new MemoryStream()) { memoryStream.Write(numArray, 0, numArray.Length); outputBytes = memoryStream.ToArray(); } } }
public void ExtractFile(string filename, string outputpath, string customename = null) { Archiver archiver = this.TrophyList.Find((Predicate <Archiver>)(b => Operators.CompareString(Strings.Mid(b.Name.ToUpper(), 1, Strings.Len(filename.ToUpper())), filename.ToUpper(), false) == 0)); if (archiver == null) { return; } if (!Directory.Exists(outputpath)) { Directory.CreateDirectory(outputpath); } byte[] array = new byte[checked ((int)(archiver.Size - 1L) + 1)]; using (FileStream fileStream1 = new FileStream(this._inputfile, FileMode.Open, FileAccess.Read, FileShare.Read)) { fileStream1.Seek(archiver.Offset, SeekOrigin.Begin); fileStream1.Read(array, 0, array.Length); using (FileStream fileStream2 = new FileStream(outputpath + Conversions.ToString(Path.DirectorySeparatorChar) + (customename != null ? customename : archiver.Name), FileMode.Create, FileAccess.ReadWrite, FileShare.None)) fileStream2.Write(array, 0, array.Length); } }