Пример #1
0
        public void AddEntry(string path, ArchiveEntryBase entry)
        {
            Exceptions.CheckArgumentNullOrEmprty(path, "path");
            Exceptions.CheckArgumentNull(entry, "entry");

            if (ParentDirectory != null)
            {
                throw new Exception("Узел не является корневым.");
            }

            string[] partNames = path.ToLowerInvariant().Split(Path.DirectorySeparatorChar);
            if (partNames.Length < 2)
            {
                throw Exceptions.CreateException("Заданный путь не содержит корневого узла или имени файла: '{1}'", Name, path);
            }

            if (partNames.First() != Name)
            {
                throw Exceptions.CreateException("Узел '{0}' не явяется корневым для заданного пути: '{1}'", Name, path);
            }

            ArchiveDirectoryEntry dirNode = this;

            for (int i = 1; i < partNames.Length - 1; i++)
            {
                dirNode = dirNode.EnsureDirectoryExists(partNames[i]);
            }

            dirNode.AddEntry(entry);
        }