public ArchivedDirectoryNode(FileSystemNode parent, HeaderData info, HeaderData[] list) : base(parent) { this.Name = System.IO.Path.GetFileName(info.FileName.TrimEnd('\\', '/')); this.Path = System.IO.Path.Combine(info.ArcName, info.FileName.TrimEnd('\\', '/')); this.InternalPath = info.FileName.TrimEnd('\\', '/'); this.Size = info.UnpSize; this.list = list; }
public ArchivedFileNode(FileSystemNode parent, HeaderData info) : base(parent) { this.Name = System.IO.Path.GetFileName(info.FileName); this.Path = System.IO.Path.Combine(info.ArcName, info.FileName); this.InternalPath = info.FileName; this.Size = info.UnpSize; this.Attributes = info.FileAttr; }
protected override HeaderData[] GetList() { List<HeaderData> items = new List<HeaderData>(40); HeaderData data = new HeaderData { ArcName = new string((char)0, 260), FileName = new string((char)0, 260) }; while (BZip2ArchiveHelper.ReadHeader(this.Handle, ref data) == 0) { BZip2ArchiveHelper.ProcessFile(this.Handle, OperationMode.Skip, null, null); items.Add(data); } return items.ToArray(); }
public static extern int ReadHeader(int handle, ref HeaderData headerData);
protected override HeaderData[] GetList() { List<HeaderData> items = new List<HeaderData>(40); Dictionary<string, int> directories = new Dictionary<string, int>(10); using (ZipInputStream stream = new ZipInputStream(this.Path)) { while (true) { var item = stream.GetNextEntry(); if (item == null) { break; } HeaderData data = new HeaderData { ArcName = this.Path, FileName = item.FileName }; if (!item.IsDirectory) { string directory = System.IO.Path.GetDirectoryName(item.FileName); if (!string.IsNullOrEmpty(directory) && !directories.ContainsKey(directory)) { foreach (var sub in GetSubDirectories(directory)) { if (!directories.ContainsKey(sub)) { directories.Add(sub, 0); items.Add(new HeaderData {ArcName = this.Path, FileName = directory, FileAttr = FileAttributes.Directory}); } } } } else { if (!directories.ContainsKey(item.FileName)) { directories.Add(item.FileName, 0); } } data.FileAttr = item.Attributes; data.UnpSize = (int)item.UncompressedSize; data.PackSize = (int)item.CompressedSize; items.Add(data); } } /*using(ZipFile zip = new ZipFile(this.Path)) { foreach(var item in zip.Entries) { HeaderData data = new HeaderData { ArcName = this.Path, FileName = item.FileName }; if (item.IsDirectory) { data.FileAttr = FileAttributes.Directory; } data.UnpSize = (int)item.UncompressedSize; data.PackSize = (int)item.CompressedSize; items.Add(data); } }*/ return items.ToArray(); }