问题标签 [inputstream]
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.
java - 从 InputStream 读取时出现 IOException
从Android 平台上的InputStream读取时,我遇到了一个奇怪的问题。我不确定这是否是特定于 Android 的问题,或者我做错了什么。
唯一特定于 Android 的是这个调用:
这将返回来自 Android 资产的文件的InputStream。无论如何,这就是我遇到问题的地方:
当 read() 执行时,它会抛出一个IOException。奇怪的是,如果我进行两次连续的单字节读取(或任意数量的单字节读取),也不例外。例如,这有效:
知道为什么两个连续的单字节读取有效,但一次调用一次读取两者会引发异常吗?InputStream似乎很好......返回超过一is.available()
百万字节(应该如此)。
堆栈跟踪在以下行之前显示了这些行InputStream.read()
:
将缓冲区大小更改为单个字节仍然会引发错误。看起来只有在读入字节数组时才会引发异常。
如果我将文件截断为 100,000 字节(文件最初为:1,917,408 字节),它工作正常。超过一定大小的文件有问题吗?
任何帮助表示赞赏!
谢谢!
java - Java:忽略输入流 - 缓冲区会溢出并发生坏事吗?
我有一个客户端连接到我的服务器。客户端向服务器发送一些我不关心的消息,如果我不打算使用它们,也不想浪费时间解析它的消息。我使用的所有 i/o 都是简单的 java i/o,而不是 nio。
如果我创建输入流并且从不读取它,该缓冲区会填满并导致问题吗?如果是这样,有什么我可以做的或者我可以设置一个属性让它丢弃它看到的数据吗?
现在如果服务器根本不创建输入流怎么办?这会导致客户端/发送方出现任何问题吗?
请告诉我。
谢谢,jbu
java - 用于进度报告的 InputStream 或 Reader 包装器
所以,我将文件数据提供给一个 API,Reader
我想要一种报告进度的方法。
FilterInputStream
编写一个包装 . 的实现似乎应该很简单FileInputStream
,跟踪读取的字节数与总文件大小,并触发某些事件(或调用某些update()
方法)以报告分数进度。
(或者,它可以报告读取的绝对字节数,而其他人可以进行数学运算——在其他流式传输情况下可能更普遍有用。)
我知道我以前见过这个,甚至可能以前做过,但是我找不到代码而且我很懒。有没有人把它放在身边?或者有人可以提出更好的方法吗?
一年(还有一点)之后……
我根据下面 Adamski 的回答实施了一个解决方案,它有效,但经过几个月的使用,我不推荐它。当您有大量更新时,触发/处理不必要的进度事件会成为巨大的成本。基本的计数机制很好,但让关心进度的人为它投票要好得多,而不是把它推给他们。
(如果您知道总大小,则可以尝试仅在每 > 1% 的更改或其他情况下触发一个事件,但这并不值得麻烦。而且通常情况下,您不这样做。)
iphone - 苹果手机。使用 HTTP 服务器建立二进制数据流
如何通过 HTTP 为 iPhone 建立输入流?我的项目是将二进制数据从 HTTP 服务器逐步拉到 iPhone。模式是拉一些数据——这是一个科学应用——分析一段时间,拉更多数据。Rince,然后重复。
该项目是桌面 Java 应用程序的一个端口,它依赖于 InputStream 及其方法 readInt、readString 等来执行此操作。
干杯,道格
java - 用Java将下载的二进制文件写入磁盘
我有一个允许在允许使用 Java 函数的 javascript 文件 (.js) 中编写附加组件的软件(我不知道这是否常见,我以前从未在 javascript 文件中看到过 java 调用)
我需要从网络服务器下载二进制文件并将其写入硬盘。我尝试了以下代码:
生成的文件不再是有效的 gzip 存档。如果我犯了一个巨大的错误,我很抱歉,但我不是程序员,也不太了解 Java。
c - Linux 的 kbhit()[和 getch()] 的问题
这段代码给了我一个阻塞 getch() 之类的功能。我正在尝试使用此代码来捕获向上向下箭头键。
补充: 尝试捕获向上箭头的关键代码给了我 3 个字符 27、91 和 65。使用 if/else 我正在尝试模式匹配,但我只得到 2 个字符。按下下一个键时捕获下一个。
我想使用 getchar() 捕获完整的单词,同时始终寻找某些键(esc、del 等)。
java - 如何在不读取 InputStream 的情况下检查 InputStream 是否为空?
我想知道 anInputStream
是否为空,但不使用方法read()
。有没有办法在不读取它的情况下知道它是否为空?
java - 以不同速率从 InputStream 多次读取
我即将加载在线内容(例如音频文件)。如果我只是打开到远程文件的连接(例如通过使用new URL().openStream()
)并将远程传递给音频播放器,它会逐渐从网络中InputStream
读取。如果音频播放器库不要求更多数据,它不会从网络读取任何内容,然后当库要求更多数据时,它会再次读取。InputStream
我的问题是我想在第一个加载过程完成后立即开始缓存下一个在线音频文件。使用 normal InputStream
,在音频播放完成时读取完成,这不好,因为如果网络带宽允许,我希望它读取得更快,以便缓存下一个音频文件。我的音频文件小于 3mb,因此可以安全地缓存到内存中。我只预取一个文件,所以内存泄漏没有问题。
是否有任何类型的缓存InputStream
,它也允许并发读取?然后我可以运行一个线程并比音频播放器消耗数据更快地缓存音频。
java - Java 套接字:InputStream.read() 与 BufferedReader.read()
我正在从 Socket 的 InputStream 中读取数据。因为我正在动态解析传入的数据,所以我需要逐个字符地读取。
做BufferedReader.read()
同样的事情InputStream.read()
吗?(假设 BufferedReader 是以 InputStream 为基础构建的)
分别读取每个字符时使用 InputStream.read() 是否更有效?或者有没有更好的方法?
java - 将输入流连接到输出流
我看到了一些类似的,但不是我需要的线程。
我有一个服务器,它基本上会从客户端客户端 A 接收输入,并将其逐字节转发到另一个客户端客户端 B。
我想将客户端 A 的输入流与客户端 B 的输出流连接起来。这可能吗?有什么方法可以做到这一点?
此外,这些客户端正在相互发送消息,这些消息对时间有些敏感,因此无法进行缓冲。我不想要一个说 500 的缓冲区并且客户端发送 499 个字节,然后我的服务器推迟转发 500 个字节,因为它没有收到最后一个字节来填充缓冲区。
现在,我正在解析每条消息以找到它的长度,然后读取长度字节,然后转发它们。我认为(并测试)这比读取一个字节并一遍又一遍地转发一个字节要好,因为那会非常慢。出于我在上一段中所述的原因,我也不想使用缓冲区或计时器——我不希望仅仅因为缓冲区未满而等待很长时间才能通过的消息。
有什么好方法可以做到这一点?