.NET 2.x Копирование файлов в папку с ограничением в 100МБ - C#

Узнай цену своей работы

Формулировка задачи:

Пытаюсь скопировать (массив расширений файлов) в папку ( и в эту папку которую я копирую сделать ограничение в

100МБ

), если лимит превышен файлов в папке, прекратить копировать! Вот код:
Листинг программы
  1. public static void GetFilesList()
  2. {
  3. long DS = 1000000;
  4. string[] extens =
  5. {
  6. ".txt", ".doc",
  7. ".cs", ".ico",
  8. ".Dll", ".Html",
  9. ".Htm", ".Xml",
  10. ".Php", ".png",
  11. ".jpg", ".gif"
  12. };
  13. if (DirSize(new DirectoryInfo(Easy.GooVer), DS) > DS)
  14. {
  15. foreach (string fileName in Directory.GetFiles(Easy.GooVer, "*.*", SearchOption.AllDirectories))
  16. {
  17. string ext = Path.GetExtension(fileName);
  18. if (Array.IndexOf(extens, ext) >= 0)
  19. { try{
  20. File.Copy(fileName, Path.Combine(Easy.str1, Path.GetFileName(fileName)), true);}catch { }
  21. }
  22. }
  23. }
  24. }
  25. public static long DirSize(DirectoryInfo d, long aLimit = 0)
  26. {
  27. long Size = 0;
  28. FileInfo[] fis = d.GetFiles();
  29. foreach (FileInfo fi in fis)
  30. {
  31. Size += fi.Length;
  32. if (aLimit > 0 && Size > aLimit)
  33. return Size;
  34. }
  35. DirectoryInfo[] dis = d.GetDirectories();
  36. foreach (DirectoryInfo di in dis)
  37. {
  38. Size += DirSize(di, aLimit);
  39. if (aLimit > 0 && Size > aLimit)
  40. return Size;
  41. }
  42. return (Size);
  43. }
Попробовал переделать так:
Листинг программы
  1. long copiedSoFar = 0;
  2. foreach (string fileName in
  3. Directory.GetFiles(Easy.GooVer, "*.*", SearchOption.AllDirectories))
  4. {
  5. string ext = Path.GetExtension(fileName);
  6. if (Array.IndexOf(extens, ext) < 0)
  7. continue;
  8. try
  9. {
  10. var fileSize = new FileInfo(fileName).Length;
  11. if (copiedSoFar + fileSize > DS)
  12. continue; // другие файлы могут ещё влезть
  13. File.Copy(fileName, Path.Combine(Easy.str1, Path.GetFileName(fileName)), true);
  14. copiedSoFar += fileSize;
  15. }
  16. catch
  17. {
  18. // тут надо сделать что-то разумное
  19. }
  20. }
Но проверку не производит, копирование прекращается моментально) Подскажите как копировать файлы из всех папок в 1-ну папку ( с ограничением файлов в папке до 100МБ), если папка превышает 100МБ прекратить копирование файлов в папку, и продолжить работу)) P.S: .Net 2.0 Без использования Linq!

UP

.
Чёт как-то глухо тут))

Решение задачи: «.NET 2.x Копирование файлов в папку с ограничением в 100МБ»

textual
Листинг программы
  1. if (DirSize(new DirectoryInfo(Easy.GooVer), DS) > DS)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут