.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)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д