8

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

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

显然,我可以编写标准的“复制循环”来读取和写入字节,甚至可以利用异步 I/O 来最大程度地减少等待。这是否可以与 Java 正在利用的平台本机功能相媲美,还是有其他方法?

4

1 回答 1

3

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

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

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

于 2012-07-13T13:37:11.760 回答