Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET等效于Java FileChannel?_C#_Tcp_Nio_.net - Fatal编程技术网

C# .NET等效于Java FileChannel?

C# .NET等效于Java FileChannel?,c#,tcp,nio,.net,C#,Tcp,Nio,.net,我想将字节直接从TCP套接字流式传输到磁盘上的文件。在Java中,可以使用NIO通道,特别是SocketChannel和FileChannel。引用FileChannel#transferFrom(…): 这种方法可能比使用 从源通道读取并写入此通道。许多的 操作系统可以直接从源通道传输字节 进入文件系统缓存,而不实际复制它们 显然,我可以编写标准的“复制循环”来读取和写入字节,甚至可以利用异步I/O来最小化等待。这与Java正在利用的平台本机功能相比,还是有其他方法?您可以使用扩展方法读取数据

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

这种方法可能比使用 从源通道读取并写入此通道。许多的 操作系统可以直接从源通道传输字节 进入文件系统缓存,而不实际复制它们


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

您可以使用扩展方法读取数据,然后使用扩展方法将数据写入文件流

一种手动方法,在NET4之前:


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

为了让事情变得更简单,您可以使用作为套接字和网络流的包装器(使用该方法)。我猜字节的普通副本就足够了,网络应该是瓶颈,而不是从一个流到另一个流的应对。