最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在C#中獲取文件大小的多種方法

 更新時間:2026年02月25日 08:47:27   作者:Never_Satisfied  
本文介紹了在C#中獲取文件大小的幾種常用方法,包括使用FileInfo類、File靜態(tài)類、FileStream以及異步方法,每種方法都有其適用場景和優(yōu)缺點(diǎn),選擇最適合的方法取決于具體需求,需要的朋友可以參考下

在C#中獲取文件大小有多種方法,以下是幾種常用的方式:

1. 使用FileInfo類(最常用)

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string filePath = @"C:\example\file.txt";
        
        // 方法1:使用FileInfo
        FileInfo fileInfo = new FileInfo(filePath);
        
        if (fileInfo.Exists)
        {
            // 獲取文件大?。ㄗ止?jié))
            long fileSizeInBytes = fileInfo.Length;
            Console.WriteLine($"文件大?。ㄗ止?jié)): {fileSizeInBytes} B");
            
            // 轉(zhuǎn)換為更友好的格式
            Console.WriteLine($"文件大?。↘B): {fileSizeInBytes / 1024.0:F2} KB");
            Console.WriteLine($"文件大?。∕B): {fileSizeInBytes / (1024.0 * 1024):F2} MB");
        }
        else
        {
            Console.WriteLine("文件不存在!");
        }
    }
}

2. 使用File靜態(tài)類

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string filePath = @"C:\example\file.txt";
        
        if (File.Exists(filePath))
        {
            FileInfo fileInfo = new FileInfo(filePath);
            long fileSize = fileInfo.Length;
            Console.WriteLine($"文件大小: {fileSize} 字節(jié)");
        }
    }
}

3. 使用FileStream獲取文件大小

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string filePath = @"C:\example\file.txt";
        
        try
        {
            using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                long fileSize = fs.Length;
                Console.WriteLine($"文件大小: {fileSize} 字節(jié)");
            }
        }
        catch (FileNotFoundException)
        {
            Console.WriteLine("文件不存在!");
        }
    }
}

4. 完整的工具類示例

using System;
using System.IO;

public class FileSizeHelper
{
    /// <summary>
    /// 獲取文件大?。ㄗ止?jié))
    /// </summary>
    public static long GetFileSizeInBytes(string filePath)
    {
        if (!File.Exists(filePath))
            throw new FileNotFoundException($"文件不存在: {filePath}");
            
        return new FileInfo(filePath).Length;
    }
    
    /// <summary>
    /// 獲取格式化后的文件大小字符串
    /// </summary>
    public static string GetFormattedFileSize(string filePath)
    {
        long bytes = GetFileSizeInBytes(filePath);
        return FormatFileSize(bytes);
    }
    
    /// <summary>
    /// 格式化文件大小
    /// </summary>
    public static string FormatFileSize(long bytes)
    {
        string[] sizes = { "B", "KB", "MB", "GB", "TB" };
        int order = 0;
        double size = bytes;
        
        while (size >= 1024 && order < sizes.Length - 1)
        {
            order++;
            size = size / 1024;
        }
        
        return $"{size:0.##} {sizes[order]}";
    }
}

// 使用示例
class Program
{
    static void Main()
    {
        string filePath = @"C:\example\file.txt";
        
        try
        {
            long sizeInBytes = FileSizeHelper.GetFileSizeInBytes(filePath);
            string formattedSize = FileSizeHelper.FormatFileSize(sizeInBytes);
            
            Console.WriteLine($"文件大小(字節(jié)): {sizeInBytes}");
            Console.WriteLine($"格式化后: {formattedSize}");
            
            // 直接獲取格式化大小
            Console.WriteLine($"文件大小: {FileSizeHelper.GetFormattedFileSize(filePath)}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"錯誤: {ex.Message}");
        }
    }
}

5. 異步獲取文件大小

using System;
using System.IO;
using System.Threading.Tasks;

public class AsyncFileSizeHelper
{
    public static async Task<long> GetFileSizeAsync(string filePath)
    {
        return await Task.Run(() =>
        {
            if (!File.Exists(filePath))
                throw new FileNotFoundException($"文件不存在: {filePath}");
                
            return new FileInfo(filePath).Length;
        });
    }
}

// 使用示例
class Program
{
    static async Task Main()
    {
        string filePath = @"C:\example\file.txt";
        
        try
        {
            long fileSize = await AsyncFileSizeHelper.GetFileSizeAsync(filePath);
            Console.WriteLine($"文件大小: {FileSizeHelper.FormatFileSize(fileSize)}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"錯誤: {ex.Message}");
        }
    }
}

注意事項

  1. 文件存在性檢查:在獲取文件大小前,應(yīng)先檢查文件是否存在
  2. 權(quán)限問題:確保程序有讀取文件的權(quán)限
  3. 大文件處理:對于非常大的文件(超過2GB),確保使用long類型
  4. 路徑格式:注意文件路徑中的特殊字符和路徑分隔符
  5. 異常處理:建議使用try-catch處理可能的異常

性能建議

  • 對于頻繁獲取文件大小的場景,建議使用FileInfo并緩存實(shí)例
  • 異步方法適合在UI應(yīng)用程序中使用,避免界面卡頓
  • 對于網(wǎng)絡(luò)文件,需要考慮網(wǎng)絡(luò)延遲和超時設(shè)置

選擇哪種方法取決于具體需求。FileInfo是最常用且性能較好的方法。

以上就是在C#中獲取文件大小的多種方法的詳細(xì)內(nèi)容,更多關(guān)于C#獲取文件大小的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#實(shí)現(xiàn)HTTP上傳文件的方法

    C#實(shí)現(xiàn)HTTP上傳文件的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)HTTP上傳文件的方法,包括了發(fā)送文件與接收文件的實(shí)現(xiàn)代碼,具有不錯的參考價值,需要的朋友可以參考下
    2014-11-11
  • C#實(shí)現(xiàn)窗口之間的傳值

    C#實(shí)現(xiàn)窗口之間的傳值

    本文給大家介紹的是C#中利用靜態(tài)類和靜態(tài)變量來實(shí)現(xiàn)窗口間傳值的方法和示例,非常的實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • 基于C#的音樂播放器主Form實(shí)現(xiàn)代碼

    基于C#的音樂播放器主Form實(shí)現(xiàn)代碼

    這篇文章主要介紹了基于C#的音樂播放器主Form實(shí)現(xiàn)代碼,很實(shí)用的功能,需要的朋友可以參考下
    2014-08-08
  • C# FileSystemWatcher 在監(jiān)控文件夾和文件時的使用方法

    C# FileSystemWatcher 在監(jiān)控文件夾和文件時的使用方法

    這篇文章主要介紹了C# FileSystemWatcher 在監(jiān)控文件夾和文件時的使用方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以參考下
    2020-06-06
  • 一文帶你快速學(xué)會C#中WinForm框架的使用詳解

    一文帶你快速學(xué)會C#中WinForm框架的使用詳解

    WinForm是一門非常經(jīng)濟(jì)實(shí)惠的技術(shù),就是說,可以在短時間內(nèi)學(xué)會,并迅速借此進(jìn)行項目開發(fā)。本文就來和大家聊聊WinForm框架的使用方法,希望對大家有所幫助
    2023-02-02
  • unity實(shí)現(xiàn)方向盤轉(zhuǎn)動效果

    unity實(shí)現(xiàn)方向盤轉(zhuǎn)動效果

    這篇文章主要為大家詳細(xì)介紹了unity實(shí)現(xiàn)方向盤轉(zhuǎn)動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C# Stack堆棧的使用方法

    C# Stack堆棧的使用方法

    最近打算學(xué)習(xí)下C# Stack堆棧的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2009-01-01
  • C#反射調(diào)用拓展類方法實(shí)例代碼

    C#反射調(diào)用拓展類方法實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于C#反射調(diào)用拓展類方法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-01-01
  • c#打印預(yù)覽控件中實(shí)現(xiàn)用鼠標(biāo)移動頁面功能代碼分享

    c#打印預(yù)覽控件中實(shí)現(xiàn)用鼠標(biāo)移動頁面功能代碼分享

    項目中需要實(shí)現(xiàn)以下功能:打印預(yù)覽控件中,可以用鼠標(biāo)拖動頁面,以查看超出顯示范圍之外的部分內(nèi)容,下面就是實(shí)現(xiàn)代碼
    2013-12-12
  • C#表達(dá)式樹Expression動態(tài)創(chuàng)建表達(dá)式

    C#表達(dá)式樹Expression動態(tài)創(chuàng)建表達(dá)式

    這篇文章介紹了C#表達(dá)式樹Expression動態(tài)創(chuàng)建表達(dá)式的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12

最新評論

霍邱县| 扶沟县| 开阳县| 泸定县| 利川市| 太仆寺旗| 奇台县| 广东省| 宜丰县| 甘肃省| 化德县| 武隆县| 顺义区| 太湖县| 漳州市| 富裕县| 盘山县| 根河市| 汉阴县| 略阳县| 新巴尔虎左旗| 岳西县| 九寨沟县| 济阳县| 哈巴河县| 桃园县| 内乡县| 万载县| 万源市| 红原县| 富宁县| 安溪县| 泰和县| 浦县| 崇信县| 麻城市| 都匀市| 灵武市| 饶阳县| 保康县| 祁阳县|