public static AudioScanner Load(ADataParser parser, Stream input) { if (parser == null) throw new ArgumentNullException("parser"); if (input == null) throw new ArgumentNullException("input"); if (!input.CanRead) throw new ArgumentException("Input stream must support reading", "input"); IOAssistant io = new IOAssistant(input); string path = io.ReadString(); DirectoryInfo directory = new DirectoryInfo(path); int extCount = io.ReadInt32(); string[] extensions = new string[extCount]; for (int i = 0; i < extCount; i++) extensions[i] = io.ReadString(); FlagByte1 flagbyte1 = (FlagByte1)input.ReadByte(); SearchOption searchoption = SearchOption.TopDirectoryOnly; if ((flagbyte1 & FlagByte1.AllDirectories) == FlagByte1.AllDirectories) searchoption = SearchOption.AllDirectories; AudioScanner ac = new AudioScanner(parser, directory, searchoption, extensions); ac.ParseAdd = (flagbyte1 & FlagByte1.ParseAdd) == FlagByte1.ParseAdd; ac.ParseUpdate = (flagbyte1 & FlagByte1.ParseUpdate) == FlagByte1.ParseUpdate; ac.RemoveDeadFiles = (flagbyte1 & FlagByte1.RemoveDeadFiles) == FlagByte1.RemoveDeadFiles; ac.ScannerReportsProgress = (flagbyte1 & FlagByte1.ReportsProgress) == FlagByte1.ReportsProgress; int existCount = io.ReadInt32(); for (int i = 0; i < existCount; i++) ac.existingFiles.Add(RawTrack.FromStream(input)); return ac; }