FileStream.Seek() 是不是通过网络传输数据?
Posted
技术标签:
【中文标题】FileStream.Seek() 是不是通过网络传输数据?【英文标题】:Does FileStream.Seek() transfer data across the wire?FileStream.Seek() 是否通过网络传输数据? 【发布时间】:2013-02-28 01:41:45 【问题描述】:我需要通过网络访问一个非常大的文件的随机部分。 (SMB 协议)
在执行 fs.Seek() 时,FileStream.Seek() 是否实际读取数据(在进程中向下复制整个文件)?
我可以做些什么来减少或缓冲这个 IO?
我的意图是轮询大文件的末尾以查找更改,如果存在更改,则从 .NET 中的书签(固定位置)向前读取。
【问题讨论】:
你找到答案了吗?我有兴趣听到答案。我的猜测是,这将取决于系统。基本上 SMB 提供seek
操作,但这取决于 .NET 和 OS 是否会使用它。在 Windows 上,您可能会得到正确的 seek
行为。
【参考方案1】:
没有。它将仅对流数据类型的本地数据进行操作。 FileStream 在本地“缓存”并不意味着您正在对某个远程文件系统上的数据执行.seek()
,而是将其作为流下载到本地计算机上。请参阅此链接 (http://technet.microsoft.com/en-us/library/bb933993(v=sql.105).aspx) 了解有关 FileStream over network 的更多信息。
【讨论】:
这是否适用于常规 .NET 编程,而不是特定于 SQL 集成? (命令行应用程序)以上是关于FileStream.Seek() 是不是通过网络传输数据?的主要内容,如果未能解决你的问题,请参考以下文章