.NET 2.x Копирование файлов в папку с ограничением в 100МБ - C#
Формулировка задачи:
Пытаюсь скопировать (массив расширений файлов) в папку ( и в эту папку которую я копирую сделать ограничение в
Попробовал переделать так:
Но проверку не производит, копирование прекращается моментально)
Подскажите как копировать файлы из всех папок в 1-ну папку ( с ограничением файлов в папке до 100МБ), если папка превышает 100МБ прекратить копирование файлов в папку, и продолжить работу))
P.S: .Net 2.0 Без использования Linq!
100МБ
), если лимит превышен файлов в папке, прекратить копировать! Вот код:
Листинг программы
- public static void GetFilesList()
- {
- long DS = 1000000;
- string[] extens =
- {
- ".txt", ".doc",
- ".cs", ".ico",
- ".Dll", ".Html",
- ".Htm", ".Xml",
- ".Php", ".png",
- ".jpg", ".gif"
- };
- if (DirSize(new DirectoryInfo(Easy.GooVer), DS) > DS)
- {
- foreach (string fileName in Directory.GetFiles(Easy.GooVer, "*.*", SearchOption.AllDirectories))
- {
- string ext = Path.GetExtension(fileName);
- if (Array.IndexOf(extens, ext) >= 0)
- { try{
- File.Copy(fileName, Path.Combine(Easy.str1, Path.GetFileName(fileName)), true);}catch { }
- }
- }
- }
- }
- public static long DirSize(DirectoryInfo d, long aLimit = 0)
- {
- long Size = 0;
- FileInfo[] fis = d.GetFiles();
- foreach (FileInfo fi in fis)
- {
- Size += fi.Length;
- if (aLimit > 0 && Size > aLimit)
- return Size;
- }
- DirectoryInfo[] dis = d.GetDirectories();
- foreach (DirectoryInfo di in dis)
- {
- Size += DirSize(di, aLimit);
- if (aLimit > 0 && Size > aLimit)
- return Size;
- }
- return (Size);
- }
Листинг программы
- long copiedSoFar = 0;
- foreach (string fileName in
- Directory.GetFiles(Easy.GooVer, "*.*", SearchOption.AllDirectories))
- {
- string ext = Path.GetExtension(fileName);
- if (Array.IndexOf(extens, ext) < 0)
- continue;
- try
- {
- var fileSize = new FileInfo(fileName).Length;
- if (copiedSoFar + fileSize > DS)
- continue; // другие файлы могут ещё влезть
- File.Copy(fileName, Path.Combine(Easy.str1, Path.GetFileName(fileName)), true);
- copiedSoFar += fileSize;
- }
- catch
- {
- // тут надо сделать что-то разумное
- }
- }
UP
.
Чёт как-то глухо тут))
Решение задачи: «.NET 2.x Копирование файлов в папку с ограничением в 100МБ»
textual
Листинг программы
- if (DirSize(new DirectoryInfo(Easy.GooVer), DS) > DS)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д