asp.net获取文件夹大小,字节的转换 如何将B转换成GB、MB和KB
作者:优天网络 日期:2015-03-23 阅读量:488 次 分享到:

网站建设过程,经常会遇到客户要求获取图片文件夹的大小,已控制网站的使用情况。在此优天网络www.uskys.com分享下如果获取文件夹大小的代码。

   #region 获取文件夹大小
    /****************************************
         * 函数名称:GetDirectoryLength(string Path)
         * 功能说明:获取文件夹大小
         * 参    数:Path:文件夹详细路径
         * 调用示列:
         * string Path = Server.MapPath("Images");
         * Response.Write(ByteConversionGBMBKB(GetDirectoryLength(Path)));
        *****************************************/
    /// <summary>
    /// 获取文件夹大小
    /// </summary>
    /// <param name="dirPath">文件夹路径</param>
    /// <returns></returns>
    public static long GetDirectoryLength(string Path)
    {
        if (!Directory.Exists(Path))
            return 0;
        long len = 0;
        DirectoryInfo di = new DirectoryInfo(Path);
        foreach (FileInfo fi in di.GetFiles())
        {
            len += fi.Length;
        }
        DirectoryInfo[] dis = di.GetDirectories();
        if (dis.Length > 0)
        {
            for (int i = 0; i < dis.Length; i++)
            {
                len += GetDirectoryLength(dis[i].FullName);
            }
        }
        return len;
    }
    /// <summary>
    /// 字节的转换 如何将B转换成GB、MB和KB
    /// </summary>
    /// <param name="KSize">字节</param>
    /// <returns></returns>
    public string ByteConversionGBMBKB(Int64 KSize)
    {
        const int GB = 1024 * 1024 * 1024;//定义GB的计算常量
        const int MB = 1024 * 1024;//定义MB的计算常量
        const int KB = 1024;//定义KB的计算常量

        if (KSize / GB >= 1)//如果当前Byte的值大于等于1GB
            return (Math.Round(KSize / (float)GB, 2)).ToString() + "GB";//将其转换成GB
        else if (KSize / MB >= 1)//如果当前Byte的值大于等于1MB
            return (Math.Round(KSize / (float)MB, 2)).ToString() + "MB";//将其转换成MB
        else if (KSize / KB >= 1)//如果当前Byte

相关标签: asp.net 获取文件夹大小
免责声明:本文章部分图片素材和内容素材来源于网络,仅供学习与参考,如果损害了您的权利,请联系网站客服,我们核实后会立即删除。