问题标签 [stream]
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.
c++ - 如何从 wfstream 读取二进制数据?
我从文件中读取数据时遇到了小问题。我希望能够读取 wstring 以及任意大小的原始数据块(大小以字节为单位)。
也许我使用了错误的流,或者类似的东西。基本上,我想读取一个 wstring,数据的大小(可以是任意数量的字节),然后是那么多字节的组件数据。显然,我无法读取 char,因为模板假定为 wchar_t。
我可以读取 wchar_t,但必须确保数据按 sizeof(wchar_t) 对齐存储。否则,我最终可能会破坏流。一种情况是数据为 15 个字节。我必须读取 16 个字节,然后屏蔽不需要的字节,将流寻找到 15 个字节的偏移量(如果可能的话,使用 wchar_t 模板化?)以便能够读取下一个数据块。
显然,应该有更好的方法来实现我想要做的事情。
.net - NetworkStream.DataAvailable 是否看到缓冲数据?
NetworkStream.DataAvailable 是否知道发送方的发送缓冲区是否为空?或者它只是简单地表明接收器的读缓冲区是否有数据?我的假设是后者...
具体来说,对于一些涉及正在进行的会话的套接字工作,我目前使用长度前缀,以便接收者确切知道当前批次中有多少数据;但是,我收到了一个 .patch,建议我改用 NetworkStream.DataAvailable。我担心的是,这只会告诉我接收者得到了什么——而不是发送者最初发送的——但我不是套接字专家。
我错了吗?或者长度前缀是要走的路?
(请注意,在流关闭之前,我不能简单地 Read(),因为在同一个连接上发送了多个批次,并且将每个批次视为单独的至关重要;如果我在一个批次中读取太多(即使它被缓冲并丢弃)然后对话将中断)。
view - 将视图与流进行比较
我使用 ClearCase。我有一个快照视图。有没有办法将此视图与流进行比较以查找更改的文件?
在 TortoiseSVN 中,这被称为“检查修改”,它显示了本地副本和我们在 repo 中的所有差异。
c - 填充 - 加密算法
我正在编写适用于“流”的 XXTEA 加密算法的实现,即可以像这样使用:crypt mykey < myfile > 输出。
必要条件之一是它根本无法访问文件(它只读取固定大小的块,直到找到 EOF)。该算法需要数据字节是 4 的倍数,因此需要添加一个填充。
对于纯文本,一个好的解决方案是填充 NULL,在解密时忽略 NULL,但相同的策略不能用于二进制流(可以包含嵌入的 NULL)。
我已经阅读了常见的解决方案,比如用丢失的字符数填充(如果它错过了 3 个字符,然后在末尾附加一个 3、3、3)等等,但我想知道:有更优雅的解决方案吗?
.net - 使用 C# 从流中播放音频
C# 中有没有办法直接从System.IO.Stream播放音频(例如 MP3),例如从 WebRequest 返回而不将数据临时保存到磁盘?
NAudio解决方案
在NAudio 1.3的帮助下,可以:
- 将 MP3 文件从 URL 加载到 MemoryStream
- 完全加载后将 MP3 数据转换为波形数据
- 使用NAudio的 WaveOut 类播放波形数据
能够播放半加载的 MP3 文件本来会很好,但由于NAudio库的设计,这似乎是不可能的。
这是将完成工作的功能:
linux - 是否可以在进程级别限制 linux 可用的标准流?
我希望能够生成一个只能访问 stdin、stdout 和 stderr 的 linux 进程(不多也不少)。我可以在流程级别本身执行此操作吗?我还含蓄地声明(矛盾修饰法)我不希望生成的进程能够更改流的另一端指向的“事物”。
比喻:
- 该进程有一个来自某个地方的输入管道,它无法更改管道的起始位置,因此它无法控制输入的来源。
- 该进程具有输出和错误管道,它无法更改输出管道的另一端指向的位置,因此它无法控制输出的位置。
- 它无法创建任何新管道。
我目前也在看 SElinux。这是否允许我创建一个只能访问这三个流的进程?谢谢你。
c# - 如何使用 FileStream 在没有排他锁的情况下附加到文件?
我FileStream
在 C#/.NET 中尝试做的是打开两个流:一个附加到文件,另一个异步读取这些写入(用于单元测试一些网络连接处理代码)。我不知道如何让编写器流以非独占锁定模式打开文件,因此代码总是抛出异常:
该进程无法访问文件“C:\test.txt”,因为它正被另一个进程使用。
这是演示该问题的少量代码:
java - java连接到jabber
我需要使用什么类型的流通过 tcp 套接字向 jabber 写入连接请求消息。我正在写一个 xml 格式的字符串。它应该与默认套接字流或数据输出流一起使用,但它没有。
java - 将 OutputStream 转换为字符串
将 java.io.OutputStream 的输出通过管道传输到 Java 中的 String 的最佳方法是什么?
说我有方法:
它将某些数据从对象写入给定的流。但是,我想尽可能轻松地将此输出转换为字符串。
我正在考虑编写这样的课程(未经测试):
但是有更好的方法吗?我只想做个测试!
java - 使用 dom4j 从流中读取单个 XML 文档
我正在尝试使用 dom4j 一次从流中读取单个 XML 文档,对其进行处理,然后继续处理流中的下一个文档。不幸的是,dom4j 的 SAXReader(在幕后使用 JAXP)一直在读取并阻塞在下面的文档元素上。
有没有办法让 SAXReader 在找到文档元素的结尾后停止读取流?有没有更好的方法来实现这一点?