复制限制为100MB的文件

时间:2016-12-23 21:13:10

标签: c#

帮助完成所有文件和文件夹的组成,并将它们复制到文件夹,您需要将文件夹限制为100MB

如果超出文件夹中文件的限制,如何定期检查卷100MB上的文件夹,以完成复制。

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);
}

P.S:我正在使用.Net 2.0,我不想使用Linq。

1 个答案:

答案 0 :(得分:1)

您的递归代码不正确。

您可以使用更简单的代码来获取目录大小

public static long DirSize(DirectoryInfo d)
{
    return d.GetFiles("*.*", SearchOption.AllDirectories).Sum(f => f.Length);
}