C#实现获取文件大小并进行比较

 更新时间:2023年03月15日 11:31:25   作者:牛奶咖啡13  
这篇文章主要为大家详细介绍了C#如何实现获取文件大小进行单位转换与文件大小比较功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下

一、实现功能

①需要获取到文件的大小然后进行合适单位的展示;

②将获取到的文件大小统一单位;

③能够进行文件大小与设置数值比较;

④两个文件比较大小;

二、核心脚本

/***
*	Title:"三维可视化" 项目
*		主题:文件操作【核心层】
*	Description:
*		功能:
*		    1、将文件大小(字节)转换为最适合的显示方式
*		    2、将文件大小(字节)统一转换为K\M\G为单位
*		    3、将所有文件与设置的数值比较文件的大小
*		    4、比较两个文件的大小
*	Date:2020
*	Version:0.1版本
*	Author:Coffee
*	Modify Recoder:
*/
 
using System;
using System.IO;
 
namespace Kernal
{
    public class FileOPC 
	{
       
        /// <summary>
        /// 获取到文件的大小
        /// </summary>
        /// <param name="fileInfo">文件信息</param>
        /// <returns>返回文件的大小(单位是字节)</returns>
        public static long GetFileSize(FileInfo fileInfo)
        {
            return fileInfo.Length;
        }
 
        /// <summary>
        /// 将文件大小(字节)转换为最适合的显示方式
        /// </summary>
        /// <param name="size">文件字节</param>
        /// <returns>返回转换后的字符串</returns>
        public static string ConvertFileSize(long size)
        {
            string result = "0KB";
            int filelength = size.ToString().Length;
            if (filelength < 4)
                result = size + "byte";
            else if (filelength < 7)
                result = Math.Round(Convert.ToDouble(size / 1024d), 2) + "KB";
            else if (filelength < 10)
                result = Math.Round(Convert.ToDouble(size / 1024d / 1024), 2) + "MB";
            else if (filelength < 13)
                result = Math.Round(Convert.ToDouble(size / 1024d / 1024 / 1024), 2) + "GB";
            else
                result = Math.Round(Convert.ToDouble(size / 1024d / 1024 / 1024 / 1024), 2) + "TB";
            return result;
        }
 
 
        /// <summary>
        /// 将文件大小(字节)统一转换为K为单位
        /// </summary>
        /// <param name="size">文件字节</param>
        /// <returns>返回转换后的字符串</returns>
        public static double ConvertFileSizeToK(long size)
        {
            double result = 0;
            if (size > 0)
            {
                result = Math.Round(Convert.ToDouble(size / 1024d), 2);
            }
            return result;
        }
 
        /// <summary>
        /// 将文件大小(字节)统一转换为M为单位
        /// </summary>
        /// <param name="size">文件字节</param>
        /// <returns>返回转换后的字符串</returns>
        public static double ConvertFileSizeToM(long size)
        {
            double result = 0;
            if (size > 0)
            {
                result = Math.Round(Convert.ToDouble(size / 1024d / 1024), 2);
            }
            return result;
        }
 
        /// <summary>
        /// 将文件大小(字节)统一转换为G为单位
        /// </summary>
        /// <param name="size">文件字节</param>
        /// <returns>返回转换后的字符串</returns>
        public static double ConvertFileSizeToG(long size)
        {
            double result = 0;
            if (size > 0)
            {
                result = Math.Round(Convert.ToDouble(size / 1024d / 1024 / 1024), 2);
            }
            return result;
        }
 
        /// <summary>
        /// 将所有文件与设置的数值比较文件的大小
        /// </summary>
        /// <param name="fileInfo">当前的文件信息</param>
        /// <param name="curSetFileSize">当前设置的文件大小</param>
        /// <returns>返回比较的结果(true:表示满足)</returns>
        public static bool CompareFileSize(FileInfo fileInfo, double curSetFileSize, CompareFileDir compareFileDir)
        {
            bool success = false;
            double curFileSize = FileOPC.ConvertFileSizeToM(fileInfo.Length);
            switch (compareFileDir)
            {
                case CompareFileDir.大于:
                    if (curFileSize > curSetFileSize)
                    {
                        success = true;
                    }
                    break;
                case CompareFileDir.小于:
                    if (curFileSize < curSetFileSize)
                    {
                        success = true;
                    }
                    break;
                case CompareFileDir.等于:
                    if (curFileSize == curSetFileSize)
                    {
                        success = true;
                    }
                    break;
                case CompareFileDir.大于等于:
                    if (curFileSize >= curSetFileSize)
                    {
                        success = true;
                    }
                    break;
                case CompareFileDir.小于等于:
                    if (curFileSize <= curSetFileSize)
                    {
                        success = true;
                    }
                    break;
                default:
                    break;
            }
 
            return success;
        }
 
        /// <summary>
        /// 比较两个文件的大小
        /// </summary>
        /// <param name="fileInfo">当前的文件信息</param>
        /// <param name="curSetFileSize">当前设置的文件大小</param>
        /// <returns>返回比较的结果(true:表示文件1比文件2大)</returns>
        public static bool CompareTwoFileSize(FileInfo fileInfo1, FileInfo fileInfo2, CompareFileDir compareFileDir)
        {
            bool success = false;
            double curFile1Size = FileOPC.ConvertFileSizeToM(fileInfo1.Length);
            double curFile2Size = FileOPC.ConvertFileSizeToM(fileInfo2.Length);
            switch (compareFileDir)
            {
                case CompareFileDir.大于:
                    if (curFile1Size > curFile2Size)
                    {
                        success = true;
                    }
                    break;
                case CompareFileDir.小于:
                    if (curFile1Size < curFile2Size)
                    {
                        success = true;
                    }
                    break;
                case CompareFileDir.等于:
                    if (curFile1Size == curFile2Size)
                    {
                        success = true;
                    }
                    break;
                case CompareFileDir.大于等于:
                    if (curFile1Size >= curFile2Size)
                    {
                        success = true;
                    }
                    break;
                case CompareFileDir.小于等于:
                    if (curFile1Size <= curFile2Size)
                    {
                        success = true;
                    }
                    break;
                default:
                    break;
            }
 
            return success;
        }
 
        
    }//Class_end
 
    //比较文件的方向
    public enum CompareFileDir
    {
        大于,         //大于
        小于,         //小于
        等于,         //等于
        大于等于,     // 大于等于
        小于等于,     //大于等于
    }
}

三、使用方法

①引用命名空间

using Kernal;

②直接使用对应的类名+方法即可

到此这篇关于C#实现获取文件大小并进行比较的文章就介绍到这了,更多相关C#获取文件大小内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#配置文件设置及应用详解

    C#配置文件设置及应用详解

    在软件开发过程中,配置文件是常用的一个功能,用于在程序运行时调整应用程序的行为,C# 提供了多种方式来创建和使用配置文件,本文将详细介绍 C# 配置文件的创建、修改、读取和写入,以及跨平台配置文件的应用,需要的朋友可以参考下
    2024-06-06
  • C#调用动态库

    C#调用动态库

    本文详细讲解了C#调用动态库的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C#实现文件与二进制互转并存入数据库

    C#实现文件与二进制互转并存入数据库

    这篇文章主要介绍了C#实现文件与二进制互转并存入数据库,本文直接给出代码实例,代码中包含详细注释,需要的朋友可以参考下
    2015-06-06
  • string与stringbuilder两者的区别

    string与stringbuilder两者的区别

    今天小编就为大家分享一篇关于string与stringbuilder两者的区别,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • 轻松学习C#的基础入门

    轻松学习C#的基础入门

    轻松学习C#的基础入门,了解C#最基本的知识点,C#是一种简洁的,类型安全的一种完全面向对象的开发语言,是Microsoft专门基于.NET Framework平台开发的而量身定做的高级程序设计语言,需要的朋友可以参考下
    2015-11-11
  • C# String Replace高效的实例方法

    C# String Replace高效的实例方法

    C# String Replace高效的实例方法,需要的朋友可以参考一下
    2013-05-05
  • C#逐行分元素读取记事本数据并写入数据库的方法

    C#逐行分元素读取记事本数据并写入数据库的方法

    这篇文章主要介绍了C#逐行分元素读取记事本数据并写入数据库的方法,通过StreamReader类里的ReadLine()方法实现逐行读取的功能,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12
  • C#利用System.Threading.Thread.Sleep即时输出信息的详解

    C#利用System.Threading.Thread.Sleep即时输出信息的详解

    本篇文章是对C#利用System.Threading.Thread.Sleep即时输出信息进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • C#如何给word文档添加水印

    C#如何给word文档添加水印

    这篇文章主要为大家详细介绍了C#如何给word文档添加水印的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • c#删除代码中的单行注释行示例

    c#删除代码中的单行注释行示例

    本文提供了c#删除代码中的单行注释行的示例,还可以看到文件流的使用方法,大家参考使用吧
    2014-01-01

最新评论