首頁 > 軟體

C#實現獲取檔案大小並進行比較

2023-11-03 18:00:29

一、實現功能

①需要獲取到檔案的大小然後進行合適單位的展示;

②將獲取到的檔案大小統一單位;

③能夠進行檔案大小與設定數值比較;

④兩個檔案比較大小;

二、核心指令碼

/***
*	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;

②直接使用對應的類名+方法即可

到此這篇關於C#實現獲取檔案大小並進行比較的文章就介紹到這了,更多相關C#獲取檔案大小內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com