以块的forms读取大文件c#

我想通过块读取非常大的文件(4GBish)块。

我目前正在尝试使用StreamReaderRead()读取方法。 语法是:

 sr.Read(char[] buffer, int index, int count) 

因为索引是一个int所以在我的情况下会溢出 。 我该怎么用?

索引是缓冲区的起始索引而不是文件指针的索引,通常它将为零。 在每次读取调用时,您将读取等于Read方法的count参数的字符。 您不会立即读取所有文件,而是以块的forms读取并使用该块。

要开始写入的缓冲区索引, 参考 。

 char[] c = null; while (sr.Peek() >= 0) { c = new char[1024]; sr.Read(c, 0, c.Length); //The output will look odd, because //only five characters are read at a time. Console.WriteLine(c); } 

上面的示例将准备1024个字节并将写入控制台。 您可以使用这些字节,例如使用TCP连接将这些字节发送到其他应用程序。

使用Read方法时,使用与流的内部缓冲区大小相同的缓冲区更有效,其中内部缓冲区设置为所需的块大小,并且始终读取小于块大小。 如果在构造流时未指定内部缓冲区的大小,则其默认大小为4千字节(4096字节),即MSDN 。

您可以尝试更简单的Read版本,它不会对流进行分块,而是逐个字符地读取它。 你必须实现自己的分块,但它会给你更多的控制权,允许你使用Long。

http://msdn.microsoft.com/en-us/library/ath1fht8(v=vs.110).aspx