FileStream读/写方法的限制

jam*_*ams 11 c# size methods file filestream

FileStream的读/写方法只能integer取值为length.但是FileStream对象的返回长度为long.在这种情况下,如果文件大小大于integer值(大约超过2GB),该怎么办?然后FileStream的读/写方法如何处理long值.

Jon*_*eet 13

然后你用多个块读写.无论如何CLR对任何特定对象的大小都有限制(即使在64位CLR上也大约2GB IIRC),所以你不能有足够大的字节数组来使它成为一个问题.

无论如何,你总是应该在读取时循环,因为你不能保证读取调用将读取你请求的字节数,即使有更多数据要来.

编辑:阅读大块:

byte[] buffer = new byte[1024 * 32];
int bytesRead;

while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
{
    // Use the data you've read
}
Run Code Online (Sandbox Code Playgroud)

大块写作取决于你写的东西......很难抽象地谈论它.

  • 亲爱的@JonSkeet,你是​​一个宝石.当我要求你提供例子时,我希望你不会提供它,因为SO上的大多数高级成员对这种愚蠢的请求表现得很粗鲁.但是你提供它是因为你有一颗善良的心,你是一个真正的绅士.我希望你很快能完成300K的声望点. (3认同)