Пример #1
0
        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);
        }
Пример #2
0
        public static FileTreeNode CreateRootNode()
        {
            IZipEntry entry = new CustomZipEntry(0, "/", DateTimeOffset.FromFileTime(0), 0, "/", null);

            return(new FileTreeNode(entry));
        }