问题标签 [bytearrayinputstream]

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 投票
4 回答
37983 浏览

java - 如何获取 ByteArrayInputStream 并将其内容保存为文件系统上的文件

我有一个 ByteArrayInputStream 形式的图像。我想把它做成可以保存到文件系统中某个位置的东西。

我一直在兜圈子,请你帮帮我。

0 投票
2 回答
2629 浏览

java - 帮助!使用 ByteArrayInputStream 时出现意外的 java.lang.ArrayIndexOutOfBoundsException

使用 ByteArrayInputStream 时出现 java.lang.ArrayIndexOutOfBoundsException。

首先,我使用 ZipInputStream 读取 zip 文件,并在循环 zipEntries 时,使用 ByteArrayInputStream 使用 ZipInputStream.read(byte[] b) 和 ByteArrayInputStream(byte[] b) 捕获每个 zipEntry 的数据方法。

最后,我总共有 6 个不同的 ByteArrayInputStream 对象,其中包含来自 6 个不同 zipEntries 的数据。然后我使用 OpenCSV 读取每个 ByteArrayInputStream。

我可以毫无问题地读取 6 个 ByteArrayInputStream 对象中的 4 个,其中的字节大小小于 2000。

其他 2 个 ByteArrayInputStream 对象的字节大小分别为 2155 和 4010,CSVreader 只能读取这 2 个对象的一部分,然后给出 java.lang.ArrayIndexOutOfBoundsException。

这是我用来循环 ZipInputStream 的代码

以下是我用来将数据从 ZipInputStream 复制到 ByteArrayInputStream 的代码。

两组 openCSV 代码在抛出异常之前能够读取几行数据,这让我相信是 byteArray 导致了问题。有什么我可以做或解决这个问题的吗?我正在尝试制作一个接受 zip 文件的应用程序,而不是在 Web 应用程序中存储任何临时文件,因为我正在部署到谷歌应用程序引擎和 tomcat 服务器。

固定的!!!感谢 stephen C,我意识到 read(byte[]) 不会读取所有内容,因此我调整了代码以使 copyInputStream 功能齐全。

0 投票
3 回答
2993 浏览

java - ByteArrayInputStream 不复制字节数组?

ByteArrayInputStream 上的文档说:

java.io.ByteArrayInputStream.ByteArrayInputStream(byte[] buf) 创建一个 ByteArrayInputStream 以便它使用 buf 作为其缓冲区数组。不复制缓冲区数组。pos的初值为0,count的初值为buf的长度。参数: buf 输入缓冲区。

当我运行以下代码时,

我得到的输出是基于 10 字节的空白数组,而不是用于测试的字符串。这表明 ByteArrayInputStream 的构造函数必须复制字节数组,而不是存储对传递的字节数组的引用。这与文档相矛盾。谁能澄清我的理解,如果字节数组是否被复制?(如果它没有被复制,那么为什么输出不反映字节数组 b 的状态?

0 投票
1 回答
2236 浏览

mysql - 在 MySQL 数据库中存储 BLOB

我有一张图片上传到服务器,位置如下:opt/glassfish/domains/domain1/applications/j2ee-modules/SmartbadgePortal/images/2badge.jpg

我正在尝试读取图像的内容而不是图像信息。我搜索了很多,可以得到以下解决方案:

但是,当我使用 System.out 打印“图像”时。我得到:

图片内容是* : BufferedImage@10d7a81: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 color space = java.awt.color.ICC_ColorSpace@722270 透明度 = 1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 418 height = 387 #numDataElements 3数据关闭[0] = 2|#]

但是,这不是我需要的。我需要图像的内容,并且需要将其存储在 MySQL 的 BLOB 列中。请帮忙,因为我一直在尝试各种方法,如 ByteArrayInputStream ,但每次我只看到这个信息而不是图像本身。

0 投票
2 回答
1583 浏览

java - ByteArrayInputStream read() 方法抛出 IndexOutOfBoundsException

对于这里有经验的人来说,这应该是一个简单的问题。我是 Java 初学者,所以我已经尝试解决这个问题几个小时了。我正在通过实际工作学习Java,我已经阅读了有关数组和内存分配的内容,但可能我仍然不明白。

我正在编写这个方法,它基本上采用源文本,例如“bla bla bla search entry bla bla bla”,并且应该通过返回类似“bla bla bla {font=red}search entry{/font} bla bla bla”的字符串来突出显示搜索条目. 如果源文本是英文的,没有问题,前半部分功能(我没有包含它)运行良好。但是如果源文本是双字节编码的,我必须使用 ByteArrayInputStream 和 ByteArrayOutputStream 来做同样的事情。

这是代码:

0 投票
2 回答
644 浏览

java - 高效的 ByteArrayInputStream 操作

我正在使用ByteArrayInputStream包含一个 XML 文档的 XML 文档,该文档由一个元素组成,其中一个大的 base 64 编码字符串作为元素的内容。我需要删除周围的标签,以便我可以解码文本并将其输出为 pdf 文档。

最有效的方法是什么?

我的下意识反应是将流读入一个byte数组,找到开始标签的结尾,找到结束标签的开头,然后将中间部分复制到另一个byte数组中;但这似乎效率很低,而且我正在使用的文本有时会很大(128KB)。我想要一种没有额外byte数组的方法。

0 投票
1 回答
397 浏览

java - 子类 FilterInputStream 过滤 ByteArrayInputStream 中的数字序列

我想创建一个子类FilterInputStream,它将重载FilterInputStream. 它将过滤输入流,这是一个由用户给出的数字序列(我们不知道这个序列有多长),其中每个连续给出的数字将只写入一次

例如,给定输入

输出应该是

你能告诉我哪些类应该重载,哪些不应该重载吗?我不知道我需要实例变量还是只需要一个构造函数?我还必须使用ByteArryInputStream--notReaderWriter.

0 投票
2 回答
43843 浏览

java - 使用 ByteArrayInputStream 从套接字接收 byte[]

这是代码,但出现错误:

是否可以从套接字接收byte[]使用?ByteArrayInputStream

0 投票
5 回答
105066 浏览

java - 如何从 Java 中的文件创建 ByteArrayInputStream?

我有一个文件,可以是 ZIP、RAR、txt、CSV、doc 等任何文件。我想从中创建一个ByteArrayInputStream。我正在使用它通过Apache Commons Net的FTPClient
将文件上传到 FTP 。

有人知道怎么做吗?

例如:

我的代码:

0 投票
5 回答
6333 浏览

java - Java BufferedReader.readLine() 不等待 EOL?

对不起,如果我在这里遗漏了一些明显的东西......但请看一下这段代码片段:

我希望这会打印“readString:null”,因为我认为 BufferedReader 在检测到有效 EOL 之前会遇到 EOF,但它会打印“readString:O hai world”。这似乎与 BufferedReader 的 Javadocs 所说的 readLine() 将做的相反:

读取一行文本。一行被认为是由换行符 ('\n')、回车符 ('\r') 或紧跟换行符的回车符中的任何一个终止的。

返回: 包含行内容的字符串,不包括任何行终止字符,如果已到达流的末尾,则返回 null

我看不出我的字符串会被重新解释为以 '\n' 和/或 '\r' 结尾的任何理由......有人可以照亮我吗?谢谢!

编辑:为了提供一些上下文,我正在尝试编写 JUnit 测试来验证我编写的旨在在 System.in 上读取的 Reader 类。使用 ByteArrayInputStreams 似乎是模拟 System.in 的一种合理方式(请参阅此相关 SO 帖子)。

当我的阅读器捕获一行时,它当前依赖于 BufferedReader.readLine()。出于我的目的,我的读者行必须都以 '\n' 或 '\r' 结尾;遇到没有 EOL 的 EOF 不应解析为有效行。所以我想我此时的问题实际上如下(我会在有时间的时候自己更详细地测试这些问题,但希望你们聪明的人能帮助我):

  • BufferedReader.readLine() 是否损坏/错误记录?或者当它的字节数组用完时,ByteArrayInputStream 是否返回了错误的东西?
  • 这种测试我的阅读器的方法是否错误,我是否应该期望 readLine() 在针对 System.in 使用时正常运行?我倾向于相信这个问题的答案是肯定的。
  • 有没有更好的方法来模拟 System.in 以进行单元测试?
  • 如果我需要在从 InputStream 读取时严格区分“\n”和“\r”,我最好编写自己的 readLine() 方法吗?如果是这种情况,我会感到非常惊讶。

再次感谢!