Я думаю, что большинство пользователей встречалось с проблемой переполненной папки «Downloads/Загрузки». Надо признать, файлов в этой папке накапливается столько, что вручную удалять их — не вариант. В связи с этим я хочу рассказать, как написать программу, которая позволяет автоматически сортировать эти файлы по папкам. Я уже неоднократно видел различные скрипты, которые делают то же самое, но отличие той программы, которую мы сейчас напишем от этих скриптов в том, что файлы сортируются только при запуске скрипта, а с помощью нашей программы они будут сортироваться по мере появления.
Для реализации данной задачи я выбрал язык C#. Связано это с кроссплатформеностью языка, легкостью в использовании и огромного количества готовых классов.
Начнем.
Для начала подключим необходимые библотеки
Объявим необходимые нам переменные
Теперь создадим папки
Для постоянного отслеживания появления файлов нам понадобится класс FileSystemWatcher.
Ну а теперь самое главное — обработчик события создания файла.
А также, в Main() необходимо добавить бесконечный цикл, чтобы программы не закрывалась
Теперь этот код нужно скомпилировать и перекинуть исполняемый файл в папку «Загрузки». Плюс в том, что этот код можно скомпилировать как под Windows, так и под Linux и Mac(с помощью Mono).
Надеюсь, я сделал вашу жизнь легче.
Спасибо
Для реализации данной задачи я выбрал язык C#. Связано это с кроссплатформеностью языка, легкостью в использовании и огромного количества готовых классов.
Начнем.
Для начала подключим необходимые библотеки
using System.Windows.Forms;
using System.IO;
Объявим необходимые нам переменные
public static string[] folders = { "Images", "Music", "Video", "Documents", "Archives", "Executable" };//Названия папок, в которые будем кидать файлы
//Типы файлов, которые мы будем перемещать в определенные папки
public static string[] ImageTypes = { ".png", ".jpeg", ".bmp", ".gif" };
public static string[] MusicTypes = { ".mp3", ".wav", ".m4a", ".flac" };
public static string[] VideoTypes = { ".mp4", ".avi", ".flv", ".wmv" };
public static string[] DocumentTypes = { ".doc", ".ppt", ".xls", ".txt", ".pdf" };
public static string[] ArchiveTypes = { ".zip", ".rar" };
public static string[] ExecutableTypes = { ".exe", ".bat", ".com" };
public static string[] Trash = {".torrent" };
public static FileInfo info; //Информация о файле
Теперь создадим папки
foreach(var f in folders)
{
if(!Directory.Exists(f))
{
Directory.CreateDirectory(f);
}
}
Для постоянного отслеживания появления файлов нам понадобится класс FileSystemWatcher.
FileSystemWatcher watcher = new FileSystemWatcher(Directory.GetCurrentDirectory(), "*.*");
watcher.IncludeSubdirectories = false;
watcher.NotifyFilter = NotifyFilters.FileName|NotifyFilters.Attributes|NotifyFilters.CreationTime;
watcher.Created += new FileSystemEventHandler(OnCreated);
watcher.EnableRaisingEvents = true;
Ну а теперь самое главное — обработчик события создания файла.
public static void OnCreated(object source, FileSystemEventArgs e)
{
info = new FileInfo(e.FullPath);
if(e.FullPath==Application.ExecutablePath)/*Проверка на то, является данный файл тем, который в данный момент исполняется, чтобы не вызвать исключение*/
{
return;
}
foreach (var type in ImageTypes)
{
if (info.Extension == type)
{
info.MoveTo("Images\\" + info.Name);
}
}
foreach (var type in MusicTypes)
{
if (info.Extension == type)
{
info.MoveTo("Music\\" + info.Name);
}
}
foreach (var type in VideoTypes)
{
if (info.Extension == type)
{
info.MoveTo("Video\\" + info.Name);
}
}
foreach (var type in DocumentTypes)
{
if (info.Extension == type)
{
info.MoveTo("Documents\\" + info.Name);
}
}
foreach (var type in ArchiveTypes)
{
if (info.Extension == type)
{
info.MoveTo("Archives\\" + info.Name);
}
}
foreach (var type in ExecutableTypes)
{
if (info.Extension == type)
{
info.MoveTo("Executable\\" + info.Name);
}
}
foreach (var type in Trash)
{
if (info.Extension == type)
{
System.Threading.Thread.Sleep(100);
info.Delete();
}
}
}
А также, в Main() необходимо добавить бесконечный цикл, чтобы программы не закрывалась
while(true)
{
}
Теперь этот код нужно скомпилировать и перекинуть исполняемый файл в папку «Загрузки». Плюс в том, что этот код можно скомпилировать как под Windows, так и под Linux и Mac(с помощью Mono).
Надеюсь, я сделал вашу жизнь легче.
Спасибо