private void Initialize(S4ZipEntry entry) { _entry = entry; Name = entry.Name; Length = entry.Length; if (Name.EndsWith(".lua", StringComparison.OrdinalIgnoreCase) || Name.EndsWith(".x7", StringComparison.OrdinalIgnoreCase)) { Length = entry.GetData().Length; } }
internal IFile CreateFile(S4ZipEntry entry) { if (Files.Any(x => x.Name.Equals(entry.Name, StringComparison.OrdinalIgnoreCase))) { throw new ArgumentException("File already exists", nameof(entry)); } var file = new NetsphereFile(entry, this); _files.Add(file); return(file); }
private void Add(S4ZipEntry entry) { NetsphereFolder parent = null; var startIndex = 0; while (true) { if (startIndex >= entry.FullName.Length) { return; } var index = entry.FullName.IndexOf("/", startIndex, StringComparison.InvariantCulture); var isFile = index == -1; if (isFile) { index = entry.FullName.Length; } var name = entry.FullName.Substring(startIndex, index - startIndex); if (isFile) { var file = new NetsphereFile(entry, parent); if (parent == null) { _files.Add(file); } else { parent.CreateFile(entry); } return; } IEnumerable <IFolder> folders = parent != null ? parent.Folders : Folders; var folder = folders.FirstOrDefault(x => x.Name == name) ?? (parent == null ? CreateFolder(name) : parent.CreateFolder(name)); parent = (NetsphereFolder)folder; startIndex = index + 1; } }
public NetsphereFile(S4ZipEntry entry, IFilesystem filesystem) { Filesystem = filesystem; Initialize(entry); }
public NetsphereFile(S4ZipEntry entry, IFolder parent) { Filesystem = parent.Filesystem; Parent = parent; Initialize(entry); }