问题标签 [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.
httpwebrequest - 有没有办法优化读取流的性能?
我正在请求远程 SOAP Web 服务,但所有操作(从单击搜索按钮到呈现带有答案的界面)都花了将近两分钟,太长了。所以我想知道是否有任何可能的方法来提高当前代码的性能。解析 xml 并将数据读取到数据库的操作运行良好,问题仅在于从流中读取答案。
java - 我无法正确比较从带有 bufferedreader 的文件中读取的单词
我有一个程序可以识别文件 .txt 中的特定单词
问题是当找到一个词时,我将它发送到“值”之类的方法,我质疑:
这个问题总是错误的。我进行了许多调试,并且我确定它们都是同一个单词(没有空格或制表符或输入)所以:这可能是文本格式的问题吗?
java - 了解各种 I/O 系统 java
我最近一直在阅读 oracle.com 上的 java 教程,我正在尝试理解 I/O。但是有很多东西,其中很多看起来是相同的,例如:数据流扫描仪打印器缓冲流文件I/O流过滤流等。
具体来说,例如,扫描仪和数据流之间有什么区别?
起初我可以掌握这一切,但流和 i/os 太多了。有没有人知道一个很好的教程或网站可以让这一切变得清晰。我缺乏理解开始变得烦人。
c# - 缓冲流详细信息
我想用例子来解释我的理解。设stream
任何具有 4 字节缓冲区的抽象缓冲网络流。让有一些字节到字节的写入过程(像 FIFO 一样绘制)。
----->net
操作很慢,我们想尽量减少它的数量。这里缓冲区有帮助。
在这里,或者,可能是更早的某个时间,.NET 虚拟机或操作系统决定完成写入操作并刷新数据:
因此,write->
操作变得非常快,并且至少在流关闭时延迟之后,数据被发送到远程主机。
在代码中,它可能如下所示:
我对吗?如果getNextByte
操作会滞后一个线程,我可以指望数据会悄悄地(异步地)传递给流,不会WriteByte
滞后所有代码吗?还是很少会滞后四次?我没有实现一些循环缓冲区来将数据传递给它,并启动额外的线程来从缓冲区读取数据并将数据传递给网络流吗?
我也非常希望缓冲的网络流可以提高数据接收的速度。
如果我从缓冲的网络流中同步获取和处理字节,我可以指望流缓冲区的数据将由 networkStream 悄悄地(异步地)传输,不会ReadByte
滞后所有代码吗?还是很少会滞后四次?
PS我知道标准NetworkStream
流是缓冲的。
想谈谈我的具体案例。我必须实现流的条带化。我从远程客户端的流中读取数据,并希望将其传递给多个流到远程服务器,但是交替(称为分叉)(图像 a),像这样
图b显示了合并过程,编码方式相同。
我不想让远程客户端等待,而程序Write
对远程服务器操作的速度会很慢。因此,我尝试手动组织从网络到 inStream 的背景写入和从outStreams 到网络的背景读取。但也许我在使用缓冲流时不在乎?也许缓冲流消除了读写过程的这种中断?
c# - 重新连接丢弃的 NetworkStream 时损坏的 BufferedStream
这里的风景...
服务器
- 我有
TcpListener
接受连接的服务器 - 建立连接后,我将其包装
TcpClient.GetStream()
在缓冲流中。 - 然后我使用 a
BinaryFormatter
反序列化来自流的传入数据
客户
- 我连接到服务器
- 连接后,我将其包装
TcpClient.GetStream()
在缓冲流中。 - 然后我使用 a
BinaryFormatter
通过 Stream 序列化数据。
只要连接保持活动状态,一切都会运行良好。我已经测试了几个小时。
问题
- 然后我停止服务器以模拟网络故障(我正在使用 localhost)
- 客户端将检测故障(抛出/处理的异常)
- 客户端稍后将重新连接一个新的
TcpClient
和新的BufferedStream
- 客户端将使用 new
BinaryFormatter
再次开始序列化数据。
然而现在,服务器会得到各种奇怪的反序列化异常。我已经低至查看 Stream 的字节,令我惊讶的是发现流已损坏!...但只有在重新连接场景之后。并且,摆脱BufferedStream
和使用NetworkStream
直接解决了这个问题。您可以多次重新连接而不会看到此问题。
是怎么回事BufferedStream
?每次重新连接我都会创建一个新的BufferedStream
,但是以前的流会以某种方式影响新的流吗?
有没有人见过这样的事情?
不幸的是我不能发布整个代码,但这是我正在做的一个例子......
示例服务器代码
示例客户端代码
不使用 BufferedStream 一切正常。此外,在重新连接上述客户端过程时也会重复。
c# - WinRT中的BufferedStream?
是否有相当于System.IO.BufferedStream
WinRT 的类?该类本身不可用,但是有没有办法实现相同的行为?
java - 使用 BufferedOutputStream
我使用 BufferedOutputStream 写入文件,它在指定的驱动程序中写入文件和目录列表,代码如下:
但是当我去查看文件时,我只找到最后写入的文件,有时我会发现混词。
c# - FileStream 及其缓冲策略
我发现将 BufferedStream 与 FileStream 结合使用是没有意义的,因为它有自己的缓冲策略。然而,我想知道一件事:
此代码将一部分字节写入指定文件。在此之前,这个字节保存在内部缓冲区中,所以我知道如果我不调用 Dispose() 方法,则不会将任何内容写入文件。
现在,我的问题是:有时我们不想将所有数据放在 FileStream 的缓冲区中,假设它仅用于小写入。是否有可能将一些数据直接放入与 FileStream 关联的文件中(而不是将其更早放入内部缓冲区)?
谢谢!
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资源管理器窗口中刷新会在大小列中显示正确的值。所以我的问题可能不是因为我写的代码,但你永远不知道。