Ejemplo n.º 1
0
        internal string RenameFolder(string pathFolder, string newNameFolder)
        {
            int pLen = pathFolder.Length;
            int sLen = pLen - 1;
            int last = pathFolder.LastIndexOf('\\', sLen - 1) + 1;

            string newPath = pathFolder.Remove(last) + newNameFolder.ToLowerInvariant() + '\\';

            List <string> removeKeys = new List <string>();
            SortedDictionary <String, TreeFiles> addFiles = new SortedDictionary <string, TreeFiles>();

            foreach (var item in treeFiles.Keys)
            {
                if (item.StartsWith(pathFolder))
                {
                    string newPathKey = newPath + item.Substring(pLen);

                    string    folder = treeFiles[item].FolderPath;
                    string    pre    = folder.Remove(last) + newNameFolder;
                    TreeFiles tFiles = new TreeFiles(pre + folder.Substring(sLen));

                    foreach (var file in treeFiles[item].GetFiles())
                    {
                        tFiles.AddFile(new sFile(file, tFiles.FolderPath));
                    }
                    removeKeys.Add(item);
                    addFiles.Add(newPathKey, tFiles);
                }
            }
            if (addFiles.Count == 0)
            {
                return(null);                     // внесение изменений в дат не требуется
            }
            foreach (var item in removeKeys)
            {
                treeFiles.Remove(item);
            }
            foreach (var pair in addFiles)
            {
                treeFiles.Add(pair.Key, pair.Value);
            }

            DATManage.RenameFolder(DatName, pathFolder, newNameFolder);

            if (shouldSave == SaveType.None)
            {
                shouldSave = SaveType.DirTree;
            }
            return(newPath);
        }
Ejemplo n.º 2
0
        internal void DeleteFile(List <string> pathFileList, bool alsoFolder)
        {
            // удаление файлов из дерева (остаются только пустые папки если в них нет файлов)
            string    folder = null;
            TreeFiles files  = null;

            List <string> folders = new List <string>();

            for (int i = 0; i < pathFileList.Count; i++)
            {
                string file = pathFileList[i];
                int    n    = file.LastIndexOf('\\') + 1;

                if (folder == null)
                {
                    folder = file.Remove(n);
                    files  = treeFiles[folder];
                    folders.Add(folder);
                }

                string f = file.Remove(n);
                if (f != folder)
                {
                    folder = f;
                    files  = treeFiles[folder];
                    folders.Add(folder);
                }
                files.RemoveFile(file);
            }
            if (alsoFolder)
            {
                foreach (var f in folders)
                {
                    RemoveEmptyFolder(f);
                }
            }

            TotalFiles -= pathFileList.Count;

            // удаление файлов из Dat
            if (dat.RemoveFiles(pathFileList))
            {
                shouldSave = SaveType.New;
            }
        }