我找到了从文件中读取数据的所有函数,例如 BinaryReader.Read Bytes(),FileStream.Read()等将读取计数作为类型“int”,这意味着我们只能读取最多2 ^ 32字节的数据文件,这又转换为4GB的数据。 我认为这是c#的一个限制,因为count必须是long类型。 在处理大于4GB的文件时是否有任何理由限制?
答案 0 :(得分:2)
可读取的文件大小没有限制。如果要读取的字节数多于int计数的字节数,只需多次调用Read()即可。
对于它的价值,int是有符号的,所以最大值是2GB。
答案 1 :(得分:1)
如果您需要读取超过500 MB的时间,那么可以考虑一次将文件流式传输到内存中。在极端情况下这非常困难,您可能需要考虑其他更容易流式传输的文件格式。 琐碎的例子是mp3和大多数(如果不是全部)视频格式。 如果文件是自定义格式,您可能需要修改格式,以便可以流式传输或至少更容易和更可靠。但这是一个完全不同的问题。
此外,某些文件系统不能支持超过1 GB,其他文件系统则支持4 GB。现代FS(NTFS和当前的Linux FS)具有更高的限制。如果您要求更多信息,那么SO上的某人肯定会告诉您所有的细节。