Не получается очистить папки не имеющие файлов (пустые) и файлы не имеющие размера. Пробую так:
static string str1 = Path.GetTempPath();
public static void EmptyDirFiles()
{
string[] dirs = Directory.GetDirectories(str1, "*", SearchOption.AllDirectories);
for (int i = dirs.Length - 1; i >= 0; i--)
{
if (Directory.GetFileSystemEntries(dirs[i]).Length == 0)
Directory.Delete(dirs[i]);
}
}
Но не удаляет, и лучше ли будет заменить GetDirectories
на EnumerateDirectories
?
[Обновление] Изменил код:
string[] dirs = Directory.EnumerateDirectories(str1, "*", SearchOption.AllDirectories).ToArray();
for (int i = dirs.Length - 1; i >= 0; i--)
{
if (Directory.EnumerateFileSystemEntries(dirs[i]).Count() == 0)
Directory.Delete(dirs[i]);
}
Отчищает только папки, как очистить файлы пустые?
[Обновил ответ по просьбе: Sv__t]
string[] dirs = Directory.EnumerateDirectories(str1, "*", SearchOption.AllDirectories).ToArray();
DirectoryInfo dirInfo = new DirectoryInfo(str1);
for (int i = dirs.Length - 1; i >= 0; i--)
{
if (Directory.EnumerateFileSystemEntries(dirs[i]).Count() == 0)
Directory.Delete(dirs[i], true);
}
foreach (string pathToFile in Directory.GetFiles(str1))
{
if (new FileInfo(pathToFile).Length == 0)
File.Delete(pathToFile);
}
Удаление пустых файлов можно сделать так:
// Directory.GetFiles(str1) возвращает все пути к файлам в указанной директории
foreach(string pathToFile in Directory.GetFiles(str1))
{
// здесь получаем размер файла и проверяем его
if (new FileInfo(pathToFile).Length == 0)
{
try
{
File.Delete(pathToFile);
}
catch(Exception ex)
{
// обработка исключения
}
}
}
Update
Если с использованием тасков, то
для директорий:
IEnumerable<String> dir = Directory.EnumerateDirectories(str1).
Where(x => new DirectoryInfo(x).EnumerateFiles().Count() == 0);
foreach (var d in dir)
{
new Task(() => Directory.Delete(d)).Start();
}
для файлов:
IEnumerable<String> files = Directory.EnumerateFiles(str1).
Where(y => new FileInfo(y).Length == 0);
foreach(var f in files)
{
new Task(() => File.Delete(f)).Start();
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Не могу разобраться как выводить данные из трёхмерного массива в DataGridПолучаю данные из БД в массив вида:
Данное условие почему-то возвращает false, не сравнивается ни с помощью equals, ни с помощью ==Как следствие, неправильно работает linq
Сам интервал мы меняем chart1ChartAreas[0]
Страница 50 книги "C# для начинающих" Мартина ДрейераВ код необходимо добавить метод