//Расширение файла
string extension = ".txt";
//Размер файла в килобайтах
int size = 1;
//Путь к папке
string path = @"C:\Новая папка";
foreach (var item in System.IO.Directory.GetFiles(path))
{
System.IO.FileInfo file = new System.IO.FileInfo(item);
if (System.IO.Path.GetExtension(item) == extension && file.Length / 1024 <= size)
{
try
{
file.Delete();
}
catch (Exception) { }
}
}
Подскажите как с помощью такого кода удалить все файлы не взирая на расширениеМожно так
Этот код удалит все файлы с расширением .txt, размер которых <= одному килобайту, расположенных в директории C:\Новая папка.Код://Расширение файла string extension = ".txt"; //Размер файла в килобайтах int size = 1; //Путь к папке string path = @"C:\Новая папка"; foreach (var item in System.IO.Directory.GetFiles(path)) { System.IO.FileInfo file = new System.IO.FileInfo(item); if (System.IO.Path.GetExtension(item) == extension && file.Length / 1024 <= size) { try { file.Delete(); } catch (Exception) { } } }
//Путь к папке
string path = @"C:\Новая папка";
if (!System.IO.Directory.Exists(path))
return "Папка не найдена";
foreach (var item in System.IO.Directory.GetFiles(path))
{
System.IO.FileInfo file = new System.IO.FileInfo(item);
try
{
file.Delete();
}
catch (Exception) { }
}
string path = @"C:\Новая папка";
if (!System.IO.Directory.Exists(path))
{
return "Папка не найдена";
}
foreach (var item in System.IO.Directory.GetFiles(path))
{
if (System.IO.Path.GetExtension(item) != ".jpg" ||
System.IO.Path.GetExtension(item) != ".gif" ||
System.IO.Path.GetExtension(item) != ".png")
{
try
{
System.IO.FileInfo file = new System.IO.FileInfo(item);
file.Delete();
}
catch (Exception) { }
}
}
string path = @"C:\proekt\images";
if (!System.IO.Directory.Exists(path))
{
return "Папка не найдена";
}
foreach (var item in System.IO.Directory.GetFiles(path))
{
if (System.IO.Path.GetExtension(item) != ".jpg" ||
System.IO.Path.GetExtension(item) != ".gif" ||
System.IO.Path.GetExtension(item) != ".jpeg" ||
System.IO.Path.GetExtension(item) != ".JPG" ||
System.IO.Path.GetExtension(item) != ".JPEG" ||
System.IO.Path.GetExtension(item) != ".bmp" ||
System.IO.Path.GetExtension(item) != ".png")
{
try
{
System.IO.FileInfo file = new System.IO.FileInfo(item);
file.Delete();
}
catch (Exception) { }
}
}
А как удалить файлы с любым расширением меньше 5 килобайт
//Размер файла в килобайтах
int size = 5;
//Путь к папке
string path = @"C:\Новая папка";
foreach (var item in System.IO.Directory.GetFiles(path))
{
System.IO.FileInfo file = new System.IO.FileInfo(item);
if (file.Length / 1024 <= size)
{
try
{
file.Delete();
}
catch (Exception) { }
}
}
Типа того:Подниму) А как сделать, чтобы по вложенным папкам тоже проходился шаблон?
//-----------------------------------------------------
var pathFolder = @"C:\ZennoProjects\Testing\Images"; // путь к папке.
var extension = "jpg|jpeg|png"; // расширение файлов (если переменную оставить пустой, то будут учтены все файлы).
var сonsiderFileSize = true; // true - учитывать рамер файла; false - не учитывать размер файла.
var size = 70; // размер файла в килобайтах.
var searchOption = SearchOption.AllDirectories; // TopDirectoryOnly - проход по заданной папке; AllDirectories - проход по заданной и вложенным папкам.
//-----------------------------------------------------
var files = new List<string>();
if (!Directory.Exists(pathFolder)) return "Папки не существует";
files = string.IsNullOrWhiteSpace(extension) ? Directory.EnumerateFiles(pathFolder, "*", searchOption).ToList() :
Directory.EnumerateFiles(pathFolder, "*", searchOption).Where(x => Regex.IsMatch(Path.GetExtension(x).ToLower(), $@"\.({extension})$")).ToList();
foreach (var file in files)
{
var fileInfo = new FileInfo(file);
switch (сonsiderFileSize)
{
case true:
if (fileInfo.Length / 1024 <= size)
{
try
{
fileInfo.Delete();
}
catch (Exception ex)
{
project.SendWarningToLog(ex.Message);
}
}
break;
case false:
try
{
fileInfo.Delete();
}
catch (Exception ex)
{
project.SendWarningToLog(ex.Message);
}
break;
}
}
А по разрешению изображения можно такое же провернуть?) А лучше и по размеру и по разрешению.Типа того:
А по разрешению изображения можно такое же провернуть?) А лучше и по размеру и по разрешению.
string path = project.Variables["path_to_image"].Value; // Путь к файлу
System.Drawing.Bitmap image = new System.Drawing.Bitmap(path);
if(image.Width < 800 && image.Height < 800){
image.Dispose();
return false;
}else return true;
Как варик, вот так можно:А по разрешению изображения можно такое же провернуть?) А лучше и по размеру и по разрешению.
//-----------------------------------------------------
var pathFolder = @"C:\ZennoProjects\Testing\Images"; // путь к папке.
var extension = "jpg|jpeg|png"; // расширение файлов (если переменную оставить пустой, то будут учтены все файлы).
var сonsiderFileSize = true; // true - учитывать размер файла; false - не учитывать размер файла.
var size = 70; // размер файла в килобайтах.
var width = 700; // ширина в пикселях (если меньше 700, то файл будет удален).
var height = 300; // высота в пикселях (если меньше 300, то файл будет удален).
var searchOption = SearchOption.AllDirectories; // TopDirectoryOnly - проход по заданной папке; AllDirectories - проход по заданной и вложенным папкам.
//-----------------------------------------------------
var files = new List<string>();
if (!Directory.Exists(pathFolder)) return "Папки не существует";
files = string.IsNullOrWhiteSpace(extension) ? Directory.EnumerateFiles(pathFolder, "*", searchOption).ToList() :
Directory.EnumerateFiles(pathFolder, "*", searchOption).Where(x => Regex.IsMatch(Path.GetExtension(x).ToLower(), $@"\.({extension})$")).ToList();
Image image;
foreach (var file in files)
{
var fileInfo = new FileInfo(file);
try {image = Image.FromFile(fileInfo.FullName);} catch {continue;}
switch (сonsiderFileSize)
{
case true:
if (fileInfo.Length / 1024 <= size && image.Width < width || image.Height < height)
{
image.Dispose();
try
{
fileInfo.Delete();
}
catch(Exception ex)
{
project.SendWarningToLog(ex.Message);
}
}
break;
case false:
if (image.Width < width || image.Height < height)
{
image.Dispose();
try
{
fileInfo.Delete();
}
catch(Exception ex)
{
project.SendWarningToLog(ex.Message);
}
}
break;
}
}
Битые, как правило, небольшого размера, и я сделал исключение по размеру - всё, что меньше 100кб - удалить.пробовать не буду, но мне кажется что при загрузке битой картинки будет исключение. а там можно уже логику строить как надо
Посмотреть вложение 75508
А как такое замногопоточить? А то если много фото, то ждать долго(Как варик, вот так можно:
запусти шаблон в несколько потоков.А как такое замногопоточить? А то если много фото, то ждать долго(
Что то не помогает(запусти шаблон в несколько потоков.
Не поможет, ибо нужно убирать foreach и добавлять lock, что бы каждый раз каждый бот по новому запрашивал данные и обрабатывал их поочередно. Поэтому тут либо делать в однопотоке через foreach наверное оптимальный вариант, либо разбивать задания по потокам или как вариант рандомно получать файл из папки, что увеличит шанс того, что каждый поток возьмет уникальный файл.Что то не помогает(
Этот код отличный ... но бывает такое ... что он тормозит что не может найти файл .... , как то можно подправить что б он не тормозил и дальше продолжал .. .если подряд будет к примеру 10 не найденых файлов тогда только тормозить .. значит файлы закончились...Типа того:
C#://----------------------------------------------------- var pathFolder = @"C:\ZennoProjects\Testing\Images"; // путь к папке. var extension = "jpg|jpeg|png"; // расширение файлов (если переменную оставить пустой, то будут учтены все файлы). var сonsiderFileSize = true; // true - учитывать рамер файла; false - не учитывать размер файла. var size = 70; // размер файла в килобайтах. var searchOption = SearchOption.AllDirectories; // TopDirectoryOnly - проход по заданной папке; AllDirectories - проход по заданной и вложенным папкам. //----------------------------------------------------- var files = new List<string>(); if (!Directory.Exists(pathFolder)) return "Папки не существует"; files = string.IsNullOrWhiteSpace(extension) ? Directory.EnumerateFiles(pathFolder, "*", searchOption).ToList() : Directory.EnumerateFiles(pathFolder, "*", searchOption).Where(x => Regex.IsMatch(Path.GetExtension(x).ToLower(), $@"\.({extension})$")).ToList(); foreach (var file in files) { var fileInfo = new FileInfo(file); switch (сonsiderFileSize) { case true: if (fileInfo.Length / 1024 <= size) { try { fileInfo.Delete(); } catch (Exception ex) { project.SendWarningToLog(ex.Message); } } break; case false: try { fileInfo.Delete(); } catch (Exception ex) { project.SendWarningToLog(ex.Message); } break; } }
Можно использовать lock + проверять файл на существование перед удалением + использовать рефреш перед проверкой файла на существованиеЭтот код отличный ... но бывает такое ... что он тормозит что не может найти файл .... , как то можно подправить что б он не тормозил и дальше продолжал .. .если подряд будет к примеру 10 не найденых файлов тогда только тормозить .. значит файлы закончились...
а можешь добавить это в код??Можно использовать lock + проверять файл на существование перед удалением + использовать рефреш перед проверкой файла на существование
Увы, мне сейчас не до этого.а можешь добавить это в код??