public int Extract(string outDir) { int res = 0; Console.WriteLine($"--- {FormatName} ---"); for (NcaSectionType section = NcaSectionType.Code; section <= NcaSectionType.Logo; section++) { using (IFileSystem currentIFs = TryOpenFileSystemSection(section)) { if (currentIFs != null) { string basePath = $"{outDir}/{FormatName}/{section}/"; Console.WriteLine(); List <string> dirEntList = EnumerateDir(currentIFs); if (dirEntList.Count <= 0) { continue; } Directory.CreateDirectory(basePath); foreach (string dirEnt in dirEntList) { string name = dirEnt; string filePath = $"{basePath}{name}".TrimEnd('\x00'); currentIFs.OpenFile(out IFile OpenFile, name.ToU8Span(), OpenMode.Read); if (OpenFile != null) { Console.WriteLine($"{filePath}"); using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write)) { OpenFile.AsStream().CopyTo(fileStream); } } } Console.WriteLine("\n"); } } } return(res); }