问题标签 [outputstream]

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 回答
2027 浏览

java - 如何正确扩展 Java FilterOutputStream 类?

我想大致监控文件上传的进度。我知道我可以覆盖 MultipartEntity 并使 writeTo(OutputStream out) 方法写入我为包装默认 InputStream 而创建的 FilterOutputStream 类。有关我如何做到这一点的完整详细信息,请参阅我的答案here

然而,经过仔细检查,这会将每个字节发送两次!我去文档看看发生了什么。看起来 FilterOutputStream 的write(byte[], int, int)方法只是在循环中调用 FilterOutputStream 的 write(byte) 方法。它推荐子类以提供更有效的方法。我假设这涉及调用底层 OutputStream 的 write(byte[], int, int) 并希望底层 OutputStream 有更好的将字节推送到流上的方法(文档推荐的 OutputStream 子类覆盖此方法并做得更​​好而不是简单地循环 OutputStream#write(byte) 方法)。

这就是我发现自己陷入困境的地方。我不能保证 MultipartEntity#writeTo(OutputStream) 总是会导致调用 OutputStream.write(byte[],int,int),所以如果我计算那里发送的字节数,那么我可能会错过一些使用发送的字节数写(字节)方法。但是,我不能算入 write(byte) 方法,因为 OutputStream.write(byte[],int,int) 方法可能永远不会调用 write(byte) 方法。

一个答案是在我的子类的 write(byte[],int,int) 方法中调用 super.write(byte[],int,int) 。然后,我知道这将简单地循环 write(byte) 方法,一次写入一个字节。然后我可以计算在 write(byte) 方法中写入的所有字节。但是,这是低效的,文档直接建议不要这样做。我确信 OutputStream 的一些子类设法一次将多个字节写入流,所以不利用这个优势是愚蠢的。

那么,如何正确覆盖 FilterOutputStream 以既高效又计算所有发送的字节数?

对不起,如果这很长,我已经把它变成了一个维基,以防有人能比我更好地描述这个问题。

0 投票
3 回答
633 浏览

java - 来自 php 的 java writeInt,

嘿,我正在尝试在 php 中创建一个数据输出流,以将原始数据类型写回 Java 应用程序

我创建了一个将数据写入数组的类(与java一样编写,从java代码复制)

最后我将数组写回客户端。

感觉它工作得不好

例如 writeInt 方法向 java 客户端发送一些错误的值我做得好吗?

谢谢你

这是我的代码

这就是我设置主 php 文件的方式

这就是我返回数据的方式

我编辑问题,根据我在java客户端的代码更改似乎我有2个字节要读取开始我总是有13、10,这是\r\n我为什么总是阅读它们?

(在我的测试中,我向 java 客户端发送一个字节,

0 投票
1 回答
127 浏览

java - 在解决收藏问题时需要帮助和想法

我今天已经发布了一个问题。这个问题是关于同一个项目但不相关的。我正在为 Lego NXT Mindstorm 机器人开发一个应用程序。我有两个机器人和一个在 PC 上运行的 GUI。

在 leJOS NXJ 中,您只能使用一个输入阅读器。这意味着您不能将 PC 直接连接到两个机器人,让两个机器人直接相互连接。所以这就是我所做的。我已将 PC 直接连接到两个机器人,当两个机器人想要直接通信时,我通过 GUI 发送它们的消息。

GUI 和机器人之间以及机器人本身之间存在大量通信。出于这个原因,每当我将数据写入输出流时,似乎某些数据被其他数据覆盖,并且系统无法正常工作。

我被建议写一个类来保存一个集合(队列)对象,这样无论何时机器人想要发送一些东西,它都会将它添加到集合(队列)中,并且从那个保存集合对象的类中,会有一个方法,以便它不断检查集合,只要它不为空,它就会将集合中的数据发送到输出流。

这意味着每当集合中的数据被发送到输出流时,就有可能添加新数据。

有些人向我建议使用 ArrayBlockQueue 等。但是这些类在机器人使用的 class.jar 文件中不可用。

我在这个 jar 文件中知道的集合类是 Vectors 和 Queue。

我在问是否有人可以通过给我如何实现此类的想法来帮助我。类中的方法会不时检查集合中是否有数据,并将它们通过输出流发送。在发送时,可能正在添加新元素。

由于数据是从一个地方发送的,因此没有数据会覆盖另一个地方。在我看来这是个好主意。

欢迎您提出所有建议。

谢谢。

0 投票
3 回答
111 浏览

c - 如何在c中捕获所有输出文本

这是我的问题。我正在为 C 中的一个项目开发一个单元测试类。单元测试类工作得很好,但是它正在测试的方法之一从 API 调用一个方法来与一块硬件进行通信。由于硬件是封闭的软件,在我运行测试时我真的没有办法让它运行,而且由于测试的黑盒性质,我不需要这样做。

这些调用只是发送到硬件的 char* 消息,在运行我的测试时,我只是得到很多“无法与 API 通信”的打印输出。我假设这是对 API 部分的某种错误检查。

我的问题是,为了一个漂亮的输出,在这种情况下是否有捕获、抑制或检查所有进入终端的文本。(那是输出流对吗?我对 C 很陌生)

0 投票
2 回答
1666 浏览

java - Scala套接字无法写入输出流

我是scala世界的新手,所以请原谅我的琐碎问题。:) 我只想打开一个到端口的套接字并沙子并接收消息。如果我收到 HELO,我想对消息做出反应,但我无法以任何方式写入套接字。我使用 nc 来监听传入的连接:

当客户端连接我写

在 netcat 中,但客户端没有发送任何答案。

这是我的斯卡拉代码:

接收工作正常,演员对传入的消息做出反应,但写入从未完成。我只是在监督某些事情,还是我的代码错误地发送到 outputSteam。

这是我从控制台窗口的输出:

0 投票
6 回答
2191 浏览

c++ - C 格式的 I/O 函数(printf、sprintf 等)是否比 IOStream 更受欢迎,如果是,为什么?

我最近浏览了很多其他人编写的代码,碰巧注意到每个人都经常使用“printf”风格的 C 函数,但是在学校学习的 C++ 函数(特别是 cout)似乎并不那么受欢迎。

这是一个有效的观察结果吗?这有什么原因吗?习俗?

谢谢,

R

0 投票
1 回答
1123 浏览

jquery - jQuery ajax 调用 httphandler 返回 zip 文件

我有一个 httphandler,它创建一个 zip 文件并将其返回以供下载。

context.Response.AppendHeader("content-disposition", "attachment; filename=myfile.zip");

是否可以从 jquery ajax 调用中调用处理程序?如果是,我应该声明什么样的数据类型?

谢谢

0 投票
1 回答
1207 浏览

java - 可以将图像作为 ByteBuffer 发送到我的 Servlet?

我正在尝试让我的 android 手机连接到我的 servlet 并向其发送某个图像。我想我会这样做的方式是使用该copyPixelsToBuffer()函数,然后尝试通过一些输出流将其发送到 servlet(类似于我在普通的独立 java 应用程序中执行此操作的方式)。这种方式行得通吗?如果是这样,我究竟使用什么样的流?我是否应该只使用 DataOutputStream 并执行以下操作:

注意:我知道这可能不是使用 Android 操作系统连接到服务器的正确方法,但目前我正在研究如何发送图像,而不是连接(除非这与图像的相关性发送)。

如果这不是您建议将图像发送到 servlet 的一种方式(我认为字节缓冲区最好,但我可能错了),您会如何建议这样做?

0 投票
3 回答
2924 浏览

java - 为什么我的 PipedOutputStream 死锁了?

我正在尝试使用 PipedInputStream 和 PipedOutputStream 实现一个线程循环缓冲区,但是每次当我在 Decoder 可运行中到达 mHead.write 时它都会锁定。我认为使用单独的线程时不会出现死锁。

编辑:这是我的服务的完整来源http://pastie.org/1179792

logcat 打印出来:

想读
想写

0 投票
4 回答
903 浏览

c - 这个简单的程序是如何工作的,与 I/O 相关

这是我的程序:

这是输出:

为什么第 3 行和第 4 行都是空行?字符不是'\n'刷新输出缓冲区并在以后被丢弃吗?