问题标签 [bufferedinputstream]

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

java - 为什么我的代码无法实时更新 JTextArea?

嗨,我是 Java 编程新手。我正在尝试从 Java 执行外部命令,然后在 JTextArea 中显示命令提示符输出in real time。该外部程序将每秒生成 1 行输出,然后在 10 秒后退出。

以下是我的 Java 代码:

original codes have been deleted to save space after reading Kumra's answer

当我在命令提示符窗口中手动运行 program.exe 时,输出会实时更新,如下所示:

当我在上面运行我的 Java 程序时,我认为 JTextArea 将实时更新以显示命令提示符输出。不幸的是,它不起作用。实际输出是这样的:

从 t=0 到 t=10,JTextArea 卡在上面的输出中。在 t=11 时,它突然显示完整的输出:

我可以知道我的代码有什么问题吗?谁能教我如何在 JTextArea 中显示命令提示符输出in real time?谢谢。

编辑 1:
我已经根据 Kumar 的回答编辑了代码,但它仍然无法正常工作。下面是最新的代码。

MyUI.java

MyThread.java

0 投票
3 回答
3587 浏览

java - 使用 java 获取 HTML 内容的最快方法是什么?

我有这个,但我想知道是否有更快的方法:

0 投票
2 回答
950 浏览

java - 为什么我的客户端在使用 SSL 套接字和 Java 7 时无法读取服务器发送的第二条消息?

在使用 Java 7 和 SSL 套接字时,我遇到了一个令人费解的问题。

我有一个客户端/服务器包。两者都使用非常简单的协议相互发送 XML 数据。每条消息的前 4 个字节总是包含整个消息的长度。这意味着,它是 XML 数据的长度加上 4 个字节。

首先,客户端向服务器发送问候消息。接下来,服务器解释问候语并发送响应。然后,客户端本身解释该消息并发送其登录信息。服务器检查该信息并发送回响应。但是这一次,客户端没有收到任何东西,尽管它使用了与从服务器获取问候响应时相同的方法。

这是客户端的简化读取方法:

这里是从前 4 个字节中检索长度的方法......

在客户端应读取第二个响应时,inputBuffer仅包含零 ( [0, 0, 0, 0, 0, 0, ...])。因此,当尝试使用 计算消息长度时readMessageLength(),它会返回-4. 当然,这会导致一个例外。

服务器发送的数据似乎还没有准备好被客户端读取。因此,我做了一些改变:

然而,这也没有奏效。现在是令人费解的部分:发生的情况是这个循环执行了两次!现在分配给的值messageLength来自 XML 数据的前 4 个字节。读取方法返回的字符串现在以 开头?xml,其中<缺少 !

所以,我尝试标记并重置第一个字节: inputBuffer.mark(4);

但这实际上是一个无限循环。由于inputBuffer永远不会改变的内容,messageLength永远不会变成-4.

我什么时候可以确定发送给客户端的数据可用?我怎么能检查呢?什么可能是更好的方法?

问候,沃尔特

PS available() 方法没有用,因为在使用 SSL 套接字时它似乎总是返回零。

0 投票
2 回答
1075 浏览

java - Socket 编程中 BufferedInputStream.available() 是否可靠?

available()在 Java 中用于套接字编程是否可靠?

我只关心它告诉我何时有可读取的字节,以便当我调用读取方法时它们不会阻塞。

BufferedInputStream.available()依靠InputStream.available().

InputStream.available() 的文档是这样说的:

请注意,虽然 InputStream 的某些实现会返回流中的字节总数,但许多不会。使用此方法的返回值来分配旨在保存此流中所有数据的缓冲区是不正确的。 http://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html#available()

我不在乎它是否给出了正确的字节数,只是当有字节可供读取时它不会给我 0 。我想知道 BufferedInputStream.available() 是否总是在 Windows 和 Linux 上用于此目的。

另外,我不确定文档中的“实现”是什么意思。那指的是什么?InputStream 的子类?不同操作系统上的Java?到不同的JVM?

有没有人在 Windows 或 Linux 或其他系统上使用 available() 并且它不起作用?

0 投票
1 回答
546 浏览

android - 当我使用“Activity.openFileOutput("myFile", Context.MODE_PRIVATE);”时,文件存储在哪个目录中 存储它?

我有这段代码可以用我的 android 应用程序存储一个远程 sqlite .db 文件:

我需要用我的 sqlitemanager 打开那个文件,我有这个功能,它从资产中打开一个 .db 文件,但我需要调整这个方法来加载我在前面提到的方法中存储的文件,它不存储在资产上文件夹。所以我必须改变这个方法,但我不知道如何正确地做到这一点。

0 投票
2 回答
2035 浏览

java - 如何使用 FTP 协议继续读取 InputStream

我正在学习 Java OOP。我的程序通过 FTP 下载文件。我想在重新启动时继续下载。这是我的代码:

起初我尝试阅读它与先前下载的文件的长度一样多,然后从那时开始继续读写。在继续下载之前读取文件需要太多时间(100MB 需要 1-2 分钟)。之后我意识到有一个跳过方法,但我猜它做同样的事情,因为它需要几乎相同的时间。

有没有更快的方法从文件的特定字节开始读取文件?还是我应该以另一种方式做到这一点?或者这是唯一的方法?

0 投票
1 回答
167 浏览

java - 为什么它不读取行终止符 ''\n'

此代码正在尝试读取文件,然后将其反转为输出文件。当它写入(不反转)时,输出是相同的。但是当它被反转时,输出将全部写入输出文件的 ONE 行。

我正在使用BufferedInputStreamBufferedOutputStream

0 投票
1 回答
2334 浏览

c# - 输入流不是有效的二进制格式

我想反序列化我的“DataStore”以获取类型列表。首先,我想用 XMLSerializer 在 XMl 中制作这些,但似乎他不喜欢接口、抽象类和类型......但没有解决方法,所以我需要将我的主要内容存储在 XML 类中:

并将我的类型存储在一个简单的类中:

好吧,只要我保存所有内容,我认为这可以工作,而且我认为如果“LoadFromBinary”不会引发一些小问题,这也可以工作-.-

远征:

感谢文森的帮助 :-)

0 投票
4 回答
15938 浏览

java - 如何在最短的时间内克隆 java 中的输入流

有人能告诉我如何克隆输入流,尽可能少地花费创建时间吗?我需要多次克隆输入流以使用多种方法来处理 IS。我已经尝试了三种方法,但由于某种原因,事情不起作用。

方法 #1:感谢 stackoverflow 社区,我发现以下链接很有帮助,并将代码片段合并到我的程序中。

如何克隆 InputStream?

但是,使用此代码可能需要一分钟(对于 10MB 文件)来创建克隆的输入流,并且我的程序需要尽可能快。

方法 #2:我也尝试使用 BufferedInputStream 克隆 IS。这很快(最慢的创建时间 == 1 毫秒。最快的 == 0 毫秒)。但是,在我发送 is1 进行处理后,处理 is2 和 is3 的方法抛出了一个错误,说没有要处理的内容,几乎就像下面所有 3 个变量都引用了同一个 IS。

方法#3:我认为编译器在骗我。对于上面的两个示例,我检查了 is1 的 markSupported()。它返回了 true,所以我认为我可以运行

要不就

在将 IS 传递给我各自的方法之前。在上面的两个例子中,我都收到一个错误,说它是一个无效的标记。

我现在没有想法,所以提前感谢你能给我的任何帮助。

PS根据我从人们那里收到的评论,我需要澄清一些关于我的情况的事情:1)这个程序在VM上运行2)输入流是从另一种方法传递给我的。我没有从本地文件中读取 3) 输入流的大小未知

0 投票
4 回答
6641 浏览

java - 在 Java 中复制数据的更快方法?

我的任务是从服务器复制数据。我正在使用BufferedInputStream和输出流来复制数据,并且我正在逐字节进行。即使它正在运行,但复制数据需要很长时间,因为其中一些数据是 100 的 MB,所以它肯定行不通。谁能建议我逐字节复制的任何替代方案,以便我的代码可以复制几百 MB 的文件。缓冲区为 2048。

这是我的代码的样子: