本文小编为大家详细介绍“C#如何实现获取文件大小并进行比较”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#如何实现获取文件大小并进行比较”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
一、实现功能
①需要获取到文件的大小然后进行合适单位的展示;
②将获取到的文件大小统一单位;
③能够进行文件大小与设置数值比较;
④两个文件比较大小;
二、核心脚本
/*** * Title:"三维可视化" 项目 * 主题:文件操作【核心层】 * Description: * 功能: * 1、将文件大小(字节)转换为最适合的显示方式 * 2、将文件大小(字节)统一转换为KMG为单位 * 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;
②直接使用对应的类名+方法即可