问题标签 [bufferedstream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
263 浏览

httpwebrequest - 有没有办法优化读取流的性能?

我正在请求远程 SOAP Web 服务,但所有操作(从单击搜索按钮到呈现带有答案的界面)都花了将近两分钟,太长了。所以我想知道是否有任何可能的方法来提高当前代码的性能。解析 xml 并将数据读取到数据库的操作运行良好,问题仅在于从流中读取答案。

0 投票
1 回答
59 浏览

java - 我无法正确比较从带有 bufferedreader 的文件中读取的单词

我有一个程序可以识别文件 .txt 中的特定单词

问题是当找到一个词时,我将它发送到“值”之类的方法,我质疑:

这个问题总是错误的。我进行了许多调试,并且我确定它们都是同一个单词(没有空格或制表符或输入)所以:这可能是文本格式的问题吗?

0 投票
2 回答
54 浏览

java - 了解各种 I/O 系统 java

我最近一直在阅读 oracle.com 上的 java 教程,我正在尝试理解 I/O。但是有很多东西,其中很多看起来是相同的,例如:数据流扫描仪打印器缓冲流文件I/O流过滤流等。

具体来说,例如,扫描仪和数据流之间有什么区别?

起初我可以掌握这一切,但流和 i/os 太多了。有没有人知道一个很好的教程或网站可以让这一切变得清晰。我缺乏理解开始变得烦人。

0 投票
0 回答
369 浏览

c# - 缓冲流详细信息

我想用例子来解释我的理解。设stream任何具有 4 字节缓冲区的抽象缓冲网络流。让有一些字节到字节的写入过程(像 FIFO 一样绘制)。

----->net操作很慢,我们想尽量减少它的数量。这里缓冲区有帮助。

在这里,或者,可能是更早的某个时间,.NET 虚拟机或操作系统决定完成写入操作并刷新数据:

因此,write->操作变得非常快,并且至少在流关闭时延迟之后,数据被发送到远程主机。

在代码中,它可能如下所示:

我对吗?如果getNextByte操作会滞后一个线程,我可以指望数据会悄悄地(异步地)传递给流,不会WriteByte滞后所有代码吗?还是很少会滞后四次?我没有实现一些循环缓冲区来将数据传递给它,并启动额外的线程来从缓冲区读取数据并将数据传递给网络流吗?

我也非常希望缓冲的网络流可以提高数据接收的速度。

如果我从缓冲的网络中同步获取和处理字节,我可以指望流缓冲区的数据将由 networkStream 悄悄地(异步地)传输,不会ReadByte滞后所有代码吗?还是很少会滞后四次?

PS我知道标准NetworkStream流是缓冲的。


想谈谈我的具体案例。我必须实现流的条带化。我从远程客户端的流中读取数据,并希望将其传递给多个流到远程服务器,但是交替(称为分叉)(图像 a),像这样

图b显示了合并过程,编码方式相同。

我不想让远程客户端等待,而程序Write对远程服务器操作的速度会很慢。因此,我尝试手动组织从网络到 inStream 的背景写入和outStreams 到网络的背景读取。但也许我在使用缓冲流时不在乎?也许缓冲流消除了读写过程的这种中断?

0 投票
1 回答
221 浏览

c# - 重新连接丢弃的 NetworkStream 时损坏的 BufferedStream

这里的风景...

服务器

  • 我有TcpListener接受连接的服务器
  • 建立连接后,我将其包装TcpClient.GetStream()在缓冲流中。
  • 然后我使用 aBinaryFormatter反序列化来自流的传入数据

客户

  • 我连接到服务器
  • 连接后,我将其包装TcpClient.GetStream()在缓冲流中。
  • 然后我使用 aBinaryFormatter通过 Stream 序列化数据。

只要连接保持活动状态,一切都会运行良好。我已经测试了几个小时。

问题

  • 然后我停止服务器以模拟网络故障(我正在使用 localhost)
  • 客户端将检测故障(抛出/处理的异常)
  • 客户端稍后将重新连接一个新的TcpClient和新的BufferedStream
  • 客户端将使用 newBinaryFormatter再次开始序列化数据。

然而现在,服务器会得到各种奇怪的反序列化异常。我已经低至查看 Stream 的字节,令我惊讶的是发现流已损坏!..​​.但只有在重新连接场景之后。并且,摆脱BufferedStream和使用NetworkStream直接解决了这个问题。您可以多次重新连接而不会看到此问题。

是怎么回事BufferedStream?每次重新连接我都会创建一个新的BufferedStream,但是以前的流会以某种方式影响新的流吗?

有没有人见过这样的事情?

不幸的是我不能发布整个代码,但这是我正在做的一个例子......

示例服务器代码

示例客户端代码

不使用 BufferedStream 一切正常。此外,在重新连接上述客户端过程时也会重复。

0 投票
1 回答
103 浏览

.net - Stream.Dispose(bool) 如何被 Finalize 方法调用?

Stream.Dispose (bool) 文档说:

此方法由公共 Dispose 方法和 Finalize 方法调用。[..] Finalize 调用 Dispose 并将 disposing 设置为 false。

但是,Stream它的超类和它的超类MarshalByRefObject都没有析构函数,并且 的析构函数Object是空的。

那么如何Stream.Dispose(bool)Finalize方法调用呢?

0 投票
1 回答
227 浏览

c# - WinRT中的BufferedStream?

是否有相当于System.IO.BufferedStreamWinRT 的类?该类本身不可用,但是有没有办法实现相同的行为?

0 投票
1 回答
401 浏览

java - 使用 BufferedOutputStream

我使用 BufferedOutputStream 写入文件,它在指定的驱动程序中写入文件和目录列表,代码如下:

但是当我去查看文件时,我只找到最后写入的文件,有时我会发现混词。

0 投票
2 回答
1374 浏览

c# - FileStream 及其缓冲策略

我发现将 BufferedStream 与 FileStream 结合使用是没有意义的,因为它有自己的缓冲策略。然而,我想知道一件事:

此代码将一部分字节写入指定文件。在此之前,这个字节保存在内部缓冲区中,所以我知道如果我不调用 Dispose() 方法,则不会将任何内容写入文件。

现在,我的问题是:有时我们不想将所有数据放在 FileStream 的缓冲区中,假设它仅用于小写入。是否有可能将一些数据直接放入与 FileStream 关​​联的文件中(而不是将其更早放入内部缓冲区)?

谢谢!

0 投票
2 回答
151 浏览

c# - 为什么文本不写入磁盘?

我有以下 C# 代码:

为什么在我调用 Close 之前数据不会写入磁盘?技术数据:我写了 9000 KB 的数据

StreamWriter类有:

FileStream类有:

BufferedStream应该是65536字节。 filename是我本地驱动器 D 上文件的完整路径。

而且我确实有权写入它。对于一个电话,Write我使用类似的东西:

另外,我不想摆脱缓冲区,我只想不时刷新流,然后在磁盘上看到它。有文件很奇怪,0 KB当你关闭时突然间,它很大。因此,通过所有测量,除非写入下一个流/磁盘,否则所有缓冲区都应该溢出。尽管如此,Windows 仅显示大于0 KB, after的文件大小Close,尽管我在写入文件完成后等待了几分钟。

有任何想法吗?

谢谢,西普里安。

更新:大小在 Windows 资源管理器大小列中显示为 0。如果我查看文件属性,则大小大于 0(这是正确的)。从属性窗口返回并刷新 Windows 资源管理器窗口后,大小列更新为大于 0 的值。我只是刷新 Windows 资源管理器窗口而不查看文件属性,大小列保持在 0。另外,如果我打开带有记事本++的文件,它包含所有数据,并且在Windows资源管理器窗口中刷新会在大小列中显示正确的值。所以我的问题可能不是因为我写的代码,但你永远不知道。