问题标签 [bytearrayoutputstream]
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 - Java:写入 ByteArrayOutputStream 时出现 IOException?
由于ByteArrayOutputStream
只是写入内存,IOException
因此永远不会发生。但是,由于OutputStream
接口的约定,所有流操作都IOException
在其throws
子句中定义。
“处理”这种从未发生过的正确方法是什么IOException
?简单地将操作包装在一个空try-catch
块中?
ByteArrayOutputStream
或者是否有任何可能引发异常的实际情况?
(另请参阅:如何以安全且可读的方式处理我知道永远不会抛出的 IOException?)
编辑
正如 Jon 所指出的,ByteArrayOutputStream
它没有在它定义throws
的方法上声明一个子句write
——但是,它继承write(byte[])
自OutputStream
,并且确实抛出了IOEXception
(很奇怪,它BAOS
不会覆盖这个方法,因为它可以替换超类版本——它一次写入一个字节——调用效率更高arraycopy
)
java - BufferedOutputStream 与 ByteArrayOutputStream
将 BufferedOutputStream 包装在 ByteArrayOutputStream 周围而不是仅使用 ByteArarrayOutputStream 本身有什么优势吗?
java - java 将 GZIPOutputStream 和 ByteArrayOutputStream 包装在一起 - 我做错了什么?
主.java
CompressedOutputStream.java
所以我有这段代码,它试图将 GZIPOutputStream 与 ByteArrayOutputStream 结合起来。
出于某种原因,我得到的只是相同的 10 个字节。
得到这个输出:
压缩数据长度(到目前为止)为 10 字节
总压缩数据长度为 10 字节
数据的 CRC32 为 4550d94d
似乎调用 write() 以抽象函数结束,即它没有到达任何地方,也没有写入任何内容。
我希望它在运行中被写入、压缩,并且能够在以后获取压缩的字节。
我在这里想念什么?似乎微不足道,但并非如此。
编辑#1:我的最终目标
只是澄清一下:最后我需要的是一个内存缓冲区,我将写入块中而不是序列中,并且在某个时候它达到X字节时我会能够获取这些压缩和校验和的字节(将它们写入某处,而不是标准的 Java 流)。
java - Java:节省内存的 ByteArrayOutputStream
我在磁盘中有一个 40MB 的文件,我需要使用字节数组将它“映射”到内存中。
起初,我认为将文件写入 ByteArrayOutputStream 是最好的方法,但我发现在复制操作期间的某个时刻需要大约 160MB 的堆空间。
有人知道在不使用三倍 RAM 文件大小的情况下执行此操作的更好方法吗?
更新:感谢您的回答。我注意到我可以稍微减少内存消耗,告诉 ByteArrayOutputStream 初始大小比原始文件大小大一点(使用我的代码强制重新分配的确切大小,必须检查原因)。
还有另一个高内存点:当我用 ByteArrayOutputStream.toByteArray 取回 byte[] 时。查看它的源代码,我可以看到它正在克隆数组:
我想我可以扩展 ByteArrayOutputStream 并重写这个方法,所以直接返回原始数组。考虑到流和字节数组不会被多次使用,这里是否有任何潜在的危险?
android - 在 Android 中写入 ByteArrayOutputStream 时出现内存不足错误
我有一个大问题,我正在从驻留在 Sdcard 中的视频文件中读取 2^21 个字节,但是当我们在 ByteArrayOutputStream 中写入相同内容时,它会抛出一个异常,因为内存不足。我不知道为什么?请为此提出正确的解决方案。
这是堆栈跟踪。
错误堆栈:
代码:
php - 从 PostgreSQL bytea 中,我们尝试使用 Imagick 读取和写回图像文件
从 PostgreSQL 中,我试图将图像文件读入 Imagick 对象 - 并简单地将相同的文件重新写入另一个 bytea 字段。目标是充分理解 PHP 和 Imagick 中使用的字符串处理和转换。
这是在 PostgreSQL 9 上,所以本机 bytea_output 是十六进制;我一直在关注将 bytea_output 更改为转义以供 PHP 处理的注释。
最终,目标是将此文件转换为 ImageMagick 支持的任何格式。
事情开始得很好!取消转义后,$imagestring 就是磁盘上文件的长度。到现在为止还挺好。事情很快就失控了……
我找不到任何要写回的字符串,它将以相同的长度将文件重新构成回数据库。
这里看起来有什么问题?
android - Android蓝牙游戏,需要跨字节流传输int[]
情况如下:我正在为 android 制作多人游戏版本的 pong。当我的球拍与球相连时,我想向其他玩家发送球的撞击点(作为 x,y 坐标),以便其他玩家的屏幕可以更新以显示球的来源以及球的来源我的桨的位置。另一个设备将计算球的轨迹并最终重复这个过程。基本上我想要的是看起来像这样的东西——
这里的问题是bluetoothConnection.write()
依赖于 java.io.OutputStream,所以只支持写一个 byte[]。
那么,有什么方法可以将我的 int[] 转换为 byte[] (稍后再返回)?如果有帮助,我的 int[] 将始终包含 5 个整数,所有整数始终为正数。我不确定我的整数的最大值是多少,因为这取决于设备的屏幕尺寸。
java - Java中的音频输入捕获 - 字节数组
我正在尝试获取音频输入的双倍/整数幅度值:
我不明白为什么字节数组只包含值 0、-1 或 1。如何获得幅度的双精度值或整数值。
pdf - PDF 到 bytearrayoutpustream 空白
我有一个 java 代码来创建一个 PDF 临时文件并将其保存到 BLOB 字段数据库中。PDF 生成正确,BLOB 保存到 DB 中。当我重新创建 PDF 时,返回的不是空格字符!问题可能是 bytearrayoutputstream 的编码 Base64。这是我的代码
java - 超过 byte[] 数组长度(超过 int 上限) - java.lang.ArrayIndexOutOfBoundsException
我有一个 ByteArrayOutputStream 对象,我收到以下错误:
我试图通过一次写入一个 250mb 的 byte[] 块来加载一个有几个演出的文件。
我可以看到字节的大小增加,一旦它达到长度 2147483647(int 的上限),它就会在以下行中爆炸:
stream 是 ByteArrayOutputStream,buf 是我以 250mb 块写入流的内容。
我打算做
在最后。我可以尝试其他一些方法来支持大于 int 上限的字节数组大小吗?