Byte miktarını görüntüleme

Byte miktarını görüntüleme

Byte miktarını, büyüklüğüne bağlı olarak otomatik KB, MB, GB, .. olarak görüntülemek için basit bir genişletme metodu paylaşmak istedim.

Dosya boyutunu Windows Gezgini'ndeki gibi görüntülemek istediğinizde hesap kitap yapmanıza gerek yok.

Aşağıdaki genişletme metotlarını kullanarak kolaylıkla bu işi halledebilirsiniz.

public static class ExtensionMethods
{
    public static string BytesToString(this long byteCount, string ayrac = "")
    {
        string[] suf = { "B", "KB", "MB", "GB", "TB", "PB", "EB" };
        if (byteCount == 0)
            return "0" + ayrac + suf[0];
        long bytes = Math.Abs(byteCount);
        int place = Convert.ToInt32(Math.Floor(Math.Log(bytes, 1024)));
        double num = Math.Round(bytes / Math.Pow(1024, place), 1);
        return (Math.Sign(byteCount) * num).ToString() + ayrac + suf[place];
    }
    public static string BytesToString(this int byteCount, string ayrac = "")
    {
        return BytesToString((long)byteCount, ayrac);
    }
    public static string BytesToString(this string dosya, string ayrac = "")
    {
        FileInfo fi = new FileInfo(HttpContext.Current.Server.MapPath(dosya));
        return BytesToString(fi.Length, ayrac);
    }
}

Gördüğünüz üzere 3 farklı versiyon var.

Biri, long tipinden, bir diğeri int tipinden büyüklükleri görüntülemek için kullanılıyor.

En sonuncusu ise direkt olarak dosyanın boyutunu alıp görüntülemek için kullanılıyor.

"ayrac" parametresi ile miktar ile birim arasına eklenecek stringi belirtebilirsiniz. (isteğe bağlı)

 

Örnek bir kullanım ise şu şekilde:

<asp:Repeater ID="rptEkler" runat="server">
    <HeaderTemplate>
        <table class="table table-hover table-condensed">
            <thead>
                <tr>
                    <th>Dosya</th>
                    <th>Boyut</th>
                </tr>
            </thead>
            <tbody>
    </HeaderTemplate>
    <FooterTemplate></tbody></table></FooterTemplate>
    <ItemTemplate>
        <tr>
            <td>
                <%#Eval("Dosya") %>
            </td>
            <td class="align-right">
                <%#Eval("Boyut").ToInt32().BytesToString(" ") %>
            </td>
        </tr>
    </ItemTemplate>
</asp:Repeater>

Sonuç:

Kodları incelemek için tıklayınız.