DotNet指定文件显示的尺寸

    在项目中开发中,有时候需要将文件的尺寸进行控制,例如需要将文件的尺寸指定为字节,TB等。现在提供一个方法,实现将指定文件的尺寸,

    提供:"字节", "KB", "MB", "GB", "TB"等尺寸的控制选项,一下方法代码可以在项目中直接使用,提高项目的开发效率。

 [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
    public static class FsLibValueExtract
    {
        readonly static string[] SizeDefinitions = { "字节", "KB", "MB", "GB", "TB" };

        /// <summary>
        /// 控制尺寸显示转换上限
        /// </summary>
        readonly static double SizeLevel = 0x400 * 0.9;

        /// <summary>
        /// 转换为尺寸显示方式
        /// </summary>
        /// <param name="size">大小</param>
        /// <returns>尺寸显示方式</returns>
        public static string ToSizeDescription(this double size)
        {
            return ToSizeDescription(size, 2);
        }

        /// <summary>
        /// 转换为尺寸显示方式
        /// </summary>
        /// <param name="size">大小</param>
        /// <param name="digits">小数位数</param>
        /// <returns>尺寸显示方式</returns>
        public static string ToSizeDescription(this double size, int digits)
        {
            var sizeDefine = 0;

            while (sizeDefine < SizeDefinitions.Length && size > SizeLevel)
            {
                size /= 0x400;
                sizeDefine++;
            }

            if (sizeDefine == 0) return size.ToString("#0") + " " + SizeDefinitions[sizeDefine];
            return size.ToString("#0." + string.Empty.PadLeft(digits, '#')) + " " + SizeDefinitions[sizeDefine];
        }

        /// <summary>
        /// 转换为尺寸显示方式
        /// </summary>
        /// <param name="size">大小</param>
        /// <returns>尺寸显示方式</returns>
        public static string ToSizeDescription(this ulong size)
        {
            return ((double)size).ToSizeDescription();
        }

        /// <summary>
        /// 转换为尺寸显示方式
        /// </summary>
        /// <param name="size">大小</param>
        /// <param name="digits">小数位数</param>
        /// <returns>尺寸显示方式</returns>
        public static string ToSizeDescription(this ulong size, int digits)
        {
            return ((double)size).ToSizeDescription(digits);
        }

        /// <summary>
        /// 转换为尺寸显示方式
        /// </summary>
        /// <param name="size">大小</param>
        /// <returns>尺寸显示方式</returns>
        public static string ToSizeDescription(this long size)
        {
            return ((double)size).ToSizeDescription();
        }

        /// <summary>
        /// 转换为尺寸显示方式
        /// </summary>
        /// <param name="size">大小</param>
        /// <param name="digits">小数位数</param>
        /// <returns>尺寸显示方式</returns>
        public static string ToSizeDescription(this long size, int digits)
        {
            return ((double)size).ToSizeDescription(digits);
        }

        /// <summary>
        /// 转换为尺寸显示方式
        /// </summary>
        /// <param name="size">大小</param>
        /// <returns>尺寸显示方式</returns>
        public static string ToSizeDescription(this int size)
        {
            return ((double)size).ToSizeDescription();
        }

        /// <summary>
        /// 转换为尺寸显示方式
        /// </summary>
        /// <param name="size">大小</param>
        /// <param name="digits">小数位数</param>
        /// <returns>尺寸显示方式</returns>
        public static string ToSizeDescription(this int size, int digits)
        {
            return ((double)size).ToSizeDescription(digits);
        }
    }

   以上只是文件尺寸进行一个算术运算,实现以上所述的功能。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端小叙

小程序首页获取数据给数组赋值,实现加载更多,以及遇到的坑

不能直接把后台返回的数组数据赋值到定义的空数组中,一定要concat连接,否则结果是看似是个数组,但是获取到的该数组却为空,导致第一次上拉加载更多的时候是拿到的...

3482
来自专栏deepcc

css实现强制不换行/自动换行/强制换行

4038
来自专栏清风

JavaScript IE9以下浏览器版本升级提示

892
来自专栏木子昭的博客

<自动化办公> Python 操控 Word

虽然Word不好用, 但还必须得用它, python-docx是专门用于编辑Word文档的一个工具库, 它有两大用途, 自动化生成word文档 and 自动化...

1.2K6
来自专栏数据小魔方

符号图表——特殊字体柱形图

今天跟大家分享的是升级版的符号图表——特殊字体柱形图! ▽▼▽ 忘了是那一期,跟大家分享过如何用特殊字体+rept函数做条形图,今天要跟大家分享的符号图表同样是...

3674
来自专栏三木的博客

React 概要

React 简介 React 是一个开源的javascript库,用来构建用户接口(UI)。下图是React的一些基本信息: ? React 的特点 单向数据流...

1887
来自专栏老秦求学

百练 石头剪刀布

总时间限制: 1000ms内存限制: 65536kB描述 石头剪刀布是常见的猜拳游戏。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。 一天,小...

3407
来自专栏HTML5学堂

如何修改alert样式

HTML5学堂:无论是PC还是移动端,系统自带alert样式总是让人感觉很丑陋,今天就教大家如何修改alert弹窗样式。 只能自定一个弹窗样式 首先必须明白的一...

3664
来自专栏一“技”之长

iOS开发CoreAnimation解读之四——Layer层动画内容

        通过前几篇博客的介绍,我们可以了解到layer层可以设置许多与控件UI相关的属性,并且对于iOS开发,UIView层的属性是会映射到CALaye...

771
来自专栏小灰灰

im4java + imagemagic 搭建一个图片处理服务

imagemagic + im4java 进行图片处理 利用 imagemagic 对图片进行处理,java工程中,使用im4java来操作imagemagi...

2217

扫码关注云+社区