从bytes数组中获取文件大小(不保存到光盘)

时间:2012-12-02 12:57:28

标签: c# .net arrays

我有一个字节的数组,如果我将这些字节写入文件,我想计算文件大小。是否可以不将文件写入光盘?

4 个答案:

答案 0 :(得分:71)

array.Length怎么样?看起来像一个字节大小。

答案 1 :(得分:43)

嗯,是的:

int length = byteArray.Length;

内存中的一个字节将是磁盘上的一个字节...至少在更高级别的文件系统术语中。您还需要考虑将使用多少个别块/集群(以及目录条目的开销),以及操作系统可能提供的任何压缩,但是问题是否是您所追求的并不清楚。 / p>

如果你真的想知道“磁盘大小”而不是文件大小(就像Windows可以显示这两个数字一样)我怀疑你真的需要将其写入磁盘 - 然后使用Win32 API查找磁盘上的实际大小。

答案 2 :(得分:4)

Array.Length会以字节为单位表示总大小。
考虑到簇大小,磁盘上的物理尺寸可能会多一点。

答案 3 :(得分:0)

前段时间,我发现它已被窃听,从那时起,我就喜欢这样做

public static string GetSizeInMemory(this long bytesize)
{


    string[] sizes = { "B", "KB", "MB", "GB", "TB" };
    double len = Convert.ToDouble(bytesize);
    int order = 0;
    while(len >= 1024D && order < sizes.Length - 1)
    {
        order++;
        len /= 1024;
    }

    return string.Format(CultureInfo.CurrentCulture,"{0:0.##} {1}", len, sizes[order]);
}