private bool CreateNode(IZipEntry entry) { // create internal node var currentNode = this; var pathBuilder = new StringBuilder(FullName()); var nameBuilder = new StringBuilder(); foreach (char c in entry.FullName.Substring(FullName().Length)) { pathBuilder = pathBuilder.Append(c); if (c == '/') { var dirEntry = new CustomZipEntry( 0, pathBuilder.ToString(), entry.LastWriteTime, 0, nameBuilder.ToString(), null ); var node = new FileTreeNode(dirEntry); currentNode.mChildren.Add(node); node.mParent = currentNode; currentNode = node; nameBuilder = nameBuilder.Clear(); } else { nameBuilder = nameBuilder.Append(c); } } // create leaf node for the zip entry if (!entry.FullName.EndsWith('/')) { var node = new FileTreeNode(entry); currentNode.mChildren.Add(node); node.mParent = currentNode; } return(true); }
public static FileTreeNode CreateRootNode() { IZipEntry entry = new CustomZipEntry(0, "/", DateTimeOffset.FromFileTime(0), 0, "/", null); return(new FileTreeNode(entry)); }