C# 获取超过System.Int64范围的文件大小(理论上可能)

C# 获取超过System.Int64范围的文件大小(理论上可能),c#,.net,stream,ntfs,system.io.fileinfo,C#,.net,Stream,Ntfs,System.io.fileinfo,要找出文件的长度(以字节为单位),您通常会使用FileInfo.length或System.IO.Stream.length(有区别吗?)。两者都是long类型,即System.Int64,因此为: 现在似乎有些文件系统,如NTFS5或Microsoft的弹性文件系统(ReFS),理论上允许最大文件大小超过Int64范围-根据,ReFS将最大文件大小限制为2^64-1字节,这等于(出于可读性目的): 在这种情况下,如何确定文件大小(不管它是多么假设),以及它会影响正常的流操作(例如使用读/写方法

要找出文件的长度(以字节为单位),您通常会使用
FileInfo.length
System.IO.Stream.length
(有区别吗?)。两者都是long类型,即System.Int64,因此为:

现在似乎有些文件系统,如NTFS5或Microsoft的弹性文件系统(ReFS),理论上允许最大文件大小超过Int64范围-根据,ReFS将最大文件大小限制为2^64-1字节,这等于(出于可读性目的):

在这种情况下,如何确定文件大小(不管它是多么假设),以及它会影响正常的流操作(例如使用读/写方法等)

在这种情况下,如何确定文件大小


在.NET框架中没有内置任何东西。当文件变大时,
FileInfo.Length
System.IO.Stream.Length
都会抛出异常。您将不得不退回到直接调用Windows API(如果Windows API当前支持此功能的话)。

我在谷歌看到了一些关于“总存储大小”等的相当大的数字。。。但我认为,即使在这里,这也不会成为一个现实的问题。在目前的硬件环境下,创建这么大的文件是不可能的,但届时,微软将为您的孙子孙女在.NET framework中添加一个额外的属性(如果该属性当时仍然存在的话),该属性将返回一个
bitineger
。如果这对谷歌来说不是问题,“那么你这样问是在浪费时间。”米奇麦,我不同意。这个问题与.NET圈有关,而谷歌并没有涉及这些技术。出于好奇,我相信会有人(包括我自己)想知道在这种甚至是假设的情况下的替代方案。他们的操作时间很长,因为现在或可预见的未来不需要其他任何东西。
9 223 372 036 854 775 807
18 446 744 073 709 551 615