.NET相当于Java FileChannel?

Ben*_*ale 7 .net c# nio tcp

我想直接从TCP套接字将字节流式传输到磁盘上的文件.在Java中,可以使用NIO通道,特别是SocketChannelFileChannel.引用FileChannel#transferFrom(...):

此方法可能比从源通道读取并写入此通道的简单循环更有效.许多操作系统可以直接从源通道将字节传输到文件系统缓存中,而无需实际复制它们.

显然,我可以编写标准的"复制循环"来读取和写入字节,甚至利用异步I/O来最小化等待.这可以与Java正在利用的平台本机功能相比,还是有另一种方法?

And*_*bel 3

您可以使用 a 读取数据NetworkStream,然后使用CopyTo扩展方法将数据写入 FileStream。

.NET4 之前的手动方法:如何将流保存到 C# 中的文件?

对于发送,有一种Socket.SendFile直接发送文件的方法,利用Win32TransmitFile方法。不幸的是没有相应的Socket.ReceiveFile方法或ReceiveFileWin32 API。