Exemple #1
0
        public FileWhiteList()
        {
            _whiteListedFiles = new SortedList <string, string>();

            //Ensure whitelist file exists
            if (File.Exists(WHITE_LIST_PATH) == false)
            {
                //File doesn't exist. Create it
                File.Create(WHITE_LIST_PATH).Close();
            }
            string[] files = File.ReadAllLines(WHITE_LIST_PATH);
            Console.WriteLine("Loading " + files.Length + " whitelisted files");

            //Clean file
            //The file is rewritten every time to ensure the files still exist
            File.WriteAllText(WHITE_LIST_PATH, string.Empty);

            for (int i = 0; i < files.Length; i++)
            {
                //If the item is succsfully added append it to the file
                //Make temp item
                DeletableItem item = DeletableItem.Make(files[i], 0);
                AddToWhiteList(item);
            }
        }
Exemple #2
0
        /// <summary>
        /// Searches for all old files that are ready to be deleted
        /// </summary>
        /// <param name="delayedStart">If an item should be deleted now, what time should it be delayed to</param>
        public void SearchForFiles()
        {
            //Search through all directories
            for (int i = 0; i < _config.SearchedDirectories.Count; i++)
            {
                SearchedDirectory searchedDirectory = _config.SearchedDirectories[i];
                int deletionTime = _config.SearchedDirectories[i].FileAgeLimit;

                //Ensure directory exists
                if (Directory.Exists(searchedDirectory.Path) == false)
                {
                    continue;
                }

                //Find all files in directory
                DeletableItem[] files = Directory.GetFiles(searchedDirectory.Path, "*").Select(s => DeletableItem.Make(s, deletionTime)).ToArray();
                //Search for directories as well
                DeletableItem[] directories = Directory.GetDirectories(searchedDirectory.Path, "*", SearchOption.TopDirectoryOnly).Select(s => DeletableItem.Make(s, deletionTime)).ToArray();


                //Combine files and directories into one array
                DeletableItem[] itemsInDirectory = new DeletableItem[files.Length + directories.Length];
                files.CopyTo(itemsInDirectory, 0);
                directories.CopyTo(itemsInDirectory, files.Length);

                for (int j = 0; j < itemsInDirectory.Length; j++)
                {
                    DeletableItem item = itemsInDirectory[j];
                    //Ensure file is not whitelisted or already is in cleaner
                    if (_whiteList.IsInWhiteList(item) || _itemsForDeletion.Contains(item))
                    {
                        continue;
                    }

                    DateTime timeToDelete = item.DeleteTime;
                    Console.WriteLine(item.Path + " is " + (timeToDelete - DateTime.UtcNow).TotalMinutes + " minutes off, deleted: " + item.ShouldBeDeleted());

                    _itemsForDeletion.Add(item);
                }
            }
        }