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

其他教程   发布日期:2023年08月29日   浏览次数:395

本文小编为大家详细介绍“C#如何实现获取文件大小并进行比较”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#如何实现获取文件大小并进行比较”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、实现功能

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

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

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

④两个文件比较大小;

二、核心脚本

  1. /***
  2. * Title:"三维可视化" 项目
  3. * 主题:文件操作【核心层】
  4. * Description:
  5. * 功能:
  6. * 1、将文件大小(字节)转换为最适合的显示方式
  7. * 2、将文件大小(字节)统一转换为KMG为单位
  8. * 3、将所有文件与设置的数值比较文件的大小
  9. * 4、比较两个文件的大小
  10. * Date:2020
  11. * Version:0.1版本
  12. * Author:Coffee
  13. * Modify Recoder:
  14. */
  15. using System;
  16. using System.IO;
  17. namespace Kernal
  18. {
  19. public class FileOPC
  20. {
  21. /// <summary>
  22. /// 获取到文件的大小
  23. /// </summary>
  24. /// <param name="fileInfo">文件信息</param>
  25. /// <returns>返回文件的大小(单位是字节)</returns>
  26. public static long GetFileSize(FileInfo fileInfo)
  27. {
  28. return fileInfo.Length;
  29. }
  30. /// <summary>
  31. /// 将文件大小(字节)转换为最适合的显示方式
  32. /// </summary>
  33. /// <param name="size">文件字节</param>
  34. /// <returns>返回转换后的字符串</returns>
  35. public static string ConvertFileSize(long size)
  36. {
  37. string result = "0KB";
  38. int filelength = size.ToString().Length;
  39. if (filelength < 4)
  40. result = size + "byte";
  41. else if (filelength < 7)
  42. result = Math.Round(Convert.ToDouble(size / 1024d), 2) + "KB";
  43. else if (filelength < 10)
  44. result = Math.Round(Convert.ToDouble(size / 1024d / 1024), 2) + "MB";
  45. else if (filelength < 13)
  46. result = Math.Round(Convert.ToDouble(size / 1024d / 1024 / 1024), 2) + "GB";
  47. else
  48. result = Math.Round(Convert.ToDouble(size / 1024d / 1024 / 1024 / 1024), 2) + "TB";
  49. return result;
  50. }
  51. /// <summary>
  52. /// 将文件大小(字节)统一转换为K为单位
  53. /// </summary>
  54. /// <param name="size">文件字节</param>
  55. /// <returns>返回转换后的字符串</returns>
  56. public static double ConvertFileSizeToK(long size)
  57. {
  58. double result = 0;
  59. if (size > 0)
  60. {
  61. result = Math.Round(Convert.ToDouble(size / 1024d), 2);
  62. }
  63. return result;
  64. }
  65. /// <summary>
  66. /// 将文件大小(字节)统一转换为M为单位
  67. /// </summary>
  68. /// <param name="size">文件字节</param>
  69. /// <returns>返回转换后的字符串</returns>
  70. public static double ConvertFileSizeToM(long size)
  71. {
  72. double result = 0;
  73. if (size > 0)
  74. {
  75. result = Math.Round(Convert.ToDouble(size / 1024d / 1024), 2);
  76. }
  77. return result;
  78. }
  79. /// <summary>
  80. /// 将文件大小(字节)统一转换为G为单位
  81. /// </summary>
  82. /// <param name="size">文件字节</param>
  83. /// <returns>返回转换后的字符串</returns>
  84. public static double ConvertFileSizeToG(long size)
  85. {
  86. double result = 0;
  87. if (size > 0)
  88. {
  89. result = Math.Round(Convert.ToDouble(size / 1024d / 1024 / 1024), 2);
  90. }
  91. return result;
  92. }
  93. /// <summary>
  94. /// 将所有文件与设置的数值比较文件的大小
  95. /// </summary>
  96. /// <param name="fileInfo">当前的文件信息</param>
  97. /// <param name="curSetFileSize">当前设置的文件大小</param>
  98. /// <returns>返回比较的结果(true:表示满足)</returns>
  99. public static bool CompareFileSize(FileInfo fileInfo, double curSetFileSize, CompareFileDir compareFileDir)
  100. {
  101. bool success = false;
  102. double curFileSize = FileOPC.ConvertFileSizeToM(fileInfo.Length);
  103. switch (compareFileDir)
  104. {
  105. case CompareFileDir.大于:
  106. if (curFileSize > curSetFileSize)
  107. {
  108. success = true;
  109. }
  110. break;
  111. case CompareFileDir.小于:
  112. if (curFileSize < curSetFileSize)
  113. {
  114. success = true;
  115. }
  116. break;
  117. case CompareFileDir.等于:
  118. if (curFileSize == curSetFileSize)
  119. {
  120. success = true;
  121. }
  122. break;
  123. case CompareFileDir.大于等于:
  124. if (curFileSize >= curSetFileSize)
  125. {
  126. success = true;
  127. }
  128. break;
  129. case CompareFileDir.小于等于:
  130. if (curFileSize <= curSetFileSize)
  131. {
  132. success = true;
  133. }
  134. break;
  135. default:
  136. break;
  137. }
  138. return success;
  139. }
  140. /// <summary>
  141. /// 比较两个文件的大小
  142. /// </summary>
  143. /// <param name="fileInfo">当前的文件信息</param>
  144. /// <param name="curSetFileSize">当前设置的文件大小</param>
  145. /// <returns>返回比较的结果(true:表示文件1比文件2大)</returns>
  146. public static bool CompareTwoFileSize(FileInfo fileInfo1, FileInfo fileInfo2, CompareFileDir compareFileDir)
  147. {
  148. bool success = false;
  149. double curFile1Size = FileOPC.ConvertFileSizeToM(fileInfo1.Length);
  150. double curFile2Size = FileOPC.ConvertFileSizeToM(fileInfo2.Length);
  151. switch (compareFileDir)
  152. {
  153. case CompareFileDir.大于:
  154. if (curFile1Size > curFile2Size)
  155. {
  156. success = true;
  157. }
  158. break;
  159. case CompareFileDir.小于:
  160. if (curFile1Size < curFile2Size)
  161. {
  162. success = true;
  163. }
  164. break;
  165. case CompareFileDir.等于:
  166. if (curFile1Size == curFile2Size)
  167. {
  168. success = true;
  169. }
  170. break;
  171. case CompareFileDir.大于等于:
  172. if (curFile1Size >= curFile2Size)
  173. {
  174. success = true;
  175. }
  176. break;
  177. case CompareFileDir.小于等于:
  178. if (curFile1Size <= curFile2Size)
  179. {
  180. success = true;
  181. }
  182. break;
  183. default:
  184. break;
  185. }
  186. return success;
  187. }
  188. }//Class_end
  189. //比较文件的方向
  190. public enum CompareFileDir
  191. {
  192. 大于, //大于
  193. 小于, //小于
  194. 等于, //等于
  195. 大于等于, // 大于等于
  196. 小于等于, //大于等于
  197. }
  198. }

三、使用方法

①引用命名空间

  1. using Kernal;

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

以上就是C#如何实现获取文件大小并进行比较的详细内容,更多关于C#如何实现获取文件大小并进行比较的资料请关注九品源码其它相关文章!