.NET FileChannel的等价物?
我想直接从TCP套接字流式传输字节到磁盘上的文件。 在Java中,可以使用NIO通道,特别是SocketChannel
和FileChannel
。 引用FileChannel#transferFrom(...)
:
此方法可能比从源通道读取并写入此通道的简单循环更有效。 许多操作系统可以直接从源通道将字节传输到文件系统缓存中,而无需实际复制它们。
很明显,我只需编写标准的“复制循环”来读写字节,甚至可以利用异步I / O来尽量减少等待时间。 这与Java正在利用的平台原生功能相媲美吗?还是有其他方法?
您可以使用NetworkStream
读取数据,然后使用CopyTo
扩展方法将数据写入FileStream。
.NET4之前的手动方法:如何将流保存到C#文件中?
对于发送,有一个Socket.SendFile
方法,它使用Win32 TransmitFile
方法直接发送文件。 不幸的是,没有相应的Socket.ReceiveFile
方法或ReceiveFile
Win32 API。