/// <summary> /// Get the Stream related to a file /// </summary> /// <param name="datItem">Information for the current file to rebuild from</param> /// <param name="file">Name of the file to process</param> /// <param name="isZip">Non-null if the input file is an archive</param> /// <param name="stream">Output stream representing the opened file</param> /// <returns>True if the stream opening succeeded, false otherwise</returns> private static bool GetFileStream(DatItem datItem, string file, bool?isZip, out Stream stream) { // Get a generic stream for the file stream = null; // If we have a zipfile, extract the stream to memory if (isZip != null) { BaseArchive archive = BaseArchive.Create(file); if (archive != null) { (stream, _) = archive.CopyToStream(datItem.GetName() ?? datItem.ItemType.ToString()); } } // Otherwise, just open the filestream else { stream = File.OpenRead(file); } // If the stream is null, then continue if (stream == null) { return(false); } // Seek to the beginning of the stream if (stream.CanSeek) { stream.Seek(0, SeekOrigin.Begin); } return(true); }