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() 是不是通过网络传输数据?的主要内容,如果未能解决你的问题,请参考以下文章

网络浏览器是不是会通过 https 缓存内容

网络浏览器是不是会通过 https 缓存内容

如何通过对网络流量的统计分析,判断是不是有黑客攻击网络

File.Copy() 从网络共享到同一台机器上的另一个共享是不是通过网络复制文件?

在不通过网络浏览器进行清理的情况下查看访问日志是不是危险?

Ping 或以其他方式通过 C# 中的 MAC 判断设备是不是在网络上