如何将Filestream分成两个子流

时间:2017-08-23 17:37:00

标签: c#

有没有办法拆分通过

获得的文件流
File.Open("100GB.bin", FileMode.Open, FileAccess.Read, FileShare.Read)

成2个相同大小的子流? 我想将文件部分上传到网站,但是网络服务器对允许发布的最大文件大小有限制。 需要两个流才能将部件同时上传到网站。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果网站没有提供多部分上传机制,只需将N个字节读入不同的流:

using (var fs = File.Open("100GB.bin", FileMode.Open, FileAccess.Read, FileShare.Read))
{
    var chunkSizeInBytes = ...; // whatever you like, below code assumes it's evenly divisible into your 100GB file
    var numChunks = fs.Length / chunkSizeInBytes;
    var buf = new byte[chunkSizeInBytes];
    for (int i = 0, bufIndex = 0; i < numChunks; ++i, bufIndex += chunkSizeInBytes) 
    {
        fs.Read(buf, bufIndex, chunkSizeInBytes);
        // if, for whatever reason, you actually need a new stream, 
        // just create a MemoryStream and use fs.CopyTo(stream, size)
        PostMyData(buf);
    }    
}