以位查找文件大小

时间:2010-09-21 10:56:04

标签: c#

我需要精确的文件大小。

无论如何都要找到以位为单位的文件大小(不是字节)。

我不想找到System.IO.FileInfo.Length并将其转换为位。因为这会丢失一个字节信息。

3 个答案:

答案 0 :(得分:9)

不可能(在我所知的任何操作系统中)拥有大小不是一个字节的倍数的文件。换句话说,文件不可能具有类似“3字节和2位”的大小。这就是为什么检索文件长度的所有功能都以字节为单位返回。您可以将其乘以8以获得位数:

long lengthInBits = new FileInfo(fileName).Length * 8;

答案 1 :(得分:2)

好吧,使用FileInfo.Length并乘以8是查找文件大小的最自然方式。它不像它的长度不是是8位的倍数:

long length = new FileInfo(fileName).Length * 8;

如果你想要花哨,你可以改为左移:

long length = new FileInfo(fileName).Length << 3;

但这并没有产生任何实质性的不同。

还有一些其他方法可以找到文件的长度 - 例如将其打开为流并询问流的长度 - 但使用FileInfo.Length可能是最简单的。你为什么不想用最明显的方法?这就像问一下如何将两个数字加在一起,说你不想使用+运算符,但没有给出理由......

答案 2 :(得分:1)

一个字节中的8位:

int numOfBits = myFileInfo.Length * 8;

为什么你觉得这个问题?

如果您不喜欢这个神奇的数字:

public const int BitsInByte = 8;
int numOfBits = myFileInfo.Length * BitsInByte;