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

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

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

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

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
    {
        // тут надо сделать что-то разумное
    }
}
Но проверку не производит, копирование прекращается моментально) Подскажите как копировать файлы из всех папок в 1-ну папку ( с ограничением файлов в папке до 100МБ), если папка превышает 100МБ прекратить копирование файлов в папку, и продолжить работу)) P.S: .Net 2.0 Без использования Linq!

UP

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

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

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

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


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

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

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