问题标签 [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.
java - 如何获取 ByteArrayInputStream 并将其内容保存为文件系统上的文件
我有一个 ByteArrayInputStream 形式的图像。我想把它做成可以保存到文件系统中某个位置的东西。
我一直在兜圈子,请你帮帮我。
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 功能齐全。
java - ByteArrayInputStream 不复制字节数组?
ByteArrayInputStream 上的文档说:
java.io.ByteArrayInputStream.ByteArrayInputStream(byte[] buf) 创建一个 ByteArrayInputStream 以便它使用 buf 作为其缓冲区数组。不复制缓冲区数组。pos的初值为0,count的初值为buf的长度。参数: buf 输入缓冲区。
当我运行以下代码时,
我得到的输出是基于 10 字节的空白数组,而不是用于测试的字符串。这表明 ByteArrayInputStream 的构造函数必须复制字节数组,而不是存储对传递的字节数组的引用。这与文档相矛盾。谁能澄清我的理解,如果字节数组是否被复制?(如果它没有被复制,那么为什么输出不反映字节数组 b 的状态?
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 ,但每次我只看到这个信息而不是图像本身。
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 来做同样的事情。
这是代码:
java - 高效的 ByteArrayInputStream 操作
我正在使用ByteArrayInputStream
包含一个 XML 文档的 XML 文档,该文档由一个元素组成,其中一个大的 base 64 编码字符串作为元素的内容。我需要删除周围的标签,以便我可以解码文本并将其输出为 pdf 文档。
最有效的方法是什么?
我的下意识反应是将流读入一个byte
数组,找到开始标签的结尾,找到结束标签的开头,然后将中间部分复制到另一个byte
数组中;但这似乎效率很低,而且我正在使用的文本有时会很大(128KB)。我想要一种没有额外byte
数组的方法。
java - 子类 FilterInputStream 过滤 ByteArrayInputStream 中的数字序列
我想创建一个子类FilterInputStream
,它将重载FilterInputStream
. 它将过滤输入流,这是一个由用户给出的数字序列(我们不知道这个序列有多长),其中每个连续给出的数字将只写入一次。
例如,给定输入
输出应该是
你能告诉我哪些类应该重载,哪些不应该重载吗?我不知道我需要实例变量还是只需要一个构造函数?我还必须使用ByteArryInputStream
--notReader
或Writer
.
java - 使用 ByteArrayInputStream 从套接字接收 byte[]
这是代码,但出现错误:
是否可以从套接字接收byte[]
使用?ByteArrayInputStream
java - 如何从 Java 中的文件创建 ByteArrayInputStream?
我有一个文件,可以是 ZIP、RAR、txt、CSV、doc 等任何文件。我想从中创建一个ByteArrayInputStream。我正在使用它通过Apache Commons Net的FTPClient
将文件上传到 FTP 。
有人知道怎么做吗?
例如:
我的代码:
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() 方法吗?如果是这种情况,我会感到非常惊讶。
再次感谢!