标签: bytearrayoutputstream

从OutputStream创建InputStream的最有效方法

此页面:http://blog.ostermiller.org/convert-java-outputstream-inputstream 描述了如何从OutputStream创建InputStream:

new ByteArrayInputStream(out.toByteArray())
Run Code Online (Sandbox Code Playgroud)

其他替代方案是使用PipedStreams和新线程,这很麻烦.

我不喜欢将许多兆字节复制到内存字节数组中的新内容.有没有一个库可以更有效地完成这项工作?

编辑:

根据Laurence Gonsalves的建议,我尝试了PipedStreams,事实证明它们并不难以应对.这是clojure中的示例代码:

(defn #^PipedInputStream create-pdf-stream [pdf-info]
  (let [in-stream (new PipedInputStream)
        out-stream (PipedOutputStream. in-stream)]
    (.start (Thread. #(;Here you write into out-stream)))
    in-stream))
Run Code Online (Sandbox Code Playgroud)

java io inputstream stream bytearrayoutputstream

80
推荐指数
4
解决办法
9万
查看次数

从ByteArrayOutputStream创建文件

如果我只有一个,有人可以解释我如何获取文件对象ByteArrayOutputStream.如何从ByteArrayOutputStream?创建文件?

java io file-io file bytearrayoutputstream

64
推荐指数
2
解决办法
12万
查看次数

如何将Byte数组转换为ByteArrayOutputStream

我需要将一个字节数组转换为ByteArrayOutputStream,以便我可以在屏幕上显示它.

java byte bytearrayoutputstream

23
推荐指数
1
解决办法
4万
查看次数

将ByteArrayInputStream的内容转换为String

我读过这篇文章,但我没有关注.我已经看过这个,但还没有看到一个将a转换ByteArrayInputStreamString使用a 的正确例子ByteArrayOutputStream.

要检索的内容ByteArrayInputStreamString,使用ByteArrayOutputstream推荐的还是有一个更可取的方法?

我正在考虑这个例子并扩展ByteArrayInputStream和利用一个Decorator来增加运行时的功能.任何对此的兴趣都是采用ByteArrayOutputStream?的更好解决方案?

java string bytearrayoutputstream bytearrayinputstream

22
推荐指数
3
解决办法
6万
查看次数

BufferedOutputStream与ByteArrayOutputStream

在ByteArrayOutputStream周围包装BufferedOutputStream是否有任何优势,而不是仅仅使用ByteArrrayOutputStream?

java io bytearrayoutputstream

21
推荐指数
1
解决办法
1万
查看次数

Java:内存高效的ByteArrayOutputStream

我在磁盘中有一个40MB的文件,我需要使用字节数组将其"映射"到内存中.

起初,我认为将文件写入ByteArrayOutputStream是最好的方法,但我发现在复制操作期间的某个时刻需要大约160MB的堆空间.

如果不使用RAM文件大小的三倍,有人知道更好的方法吗?

更新:感谢您的回答.我注意到我可以减少内存消耗,稍微告诉ByteArrayOutputStream的初始大小要比原始文件大小稍大一些(使用我的代码强制重新分配的确切大小,得到检查原因).

还有另一个高内存点:当我用ByteArrayOutputStream.toByteArray返回byte []时.看看它的源代码,我可以看到它正在克隆数组:

public synchronized byte toByteArray()[] {
    return Arrays.copyOf(buf, count);
}
Run Code Online (Sandbox Code Playgroud)

我想我可以扩展ByteArrayOutputStream并重写此方法,以便直接返回原始数组.这里有没有潜在的危险,因为流和字节数组不会被多次使用?

java bytearray memory-mapped-files bytearrayoutputstream

16
推荐指数
3
解决办法
4万
查看次数

将OutputStream转换为ByteArrayOutputStream

我正在尝试将其转换OutputStreamByteArrayOutput流.我无法找到关于如何做到这一点的任何明确的简单答案.这个问题是在StackOverflow问题的标题中提出的,但问题的主体是如何将a更改ByteArrayStreamOuputStream.我OutputStream已经创建了一个,答案中给出的这个例子将无法编译!

那个问题就在这里

我有一个已经构造的OutputStream,其长度为44字节,称为waveHeader.我想将其转换为ByteArrayOutputStream,因为我希望能够使用waveHeader.ToByteArray()将其更改为byte [],以便在以后的过程中使用;

是否有简单的铸造类型或允许这样的东西?

如果没有那么:

  • 有没有办法在原始OutputStream中构造指向数据的指针,如果无法转换它的话?

  • 如何访问OutputStream中包含的数据?

我是JAVA的新手.这对我来说只是一个爱好.在VisualBasic .net中的流更容易!

java outputstream bytearrayoutputstream wave

15
推荐指数
2
解决办法
7万
查看次数

如何创建一个multipart zip文件并将其读回?

我如何正确地将字节压缩到a ByteArrayOutputStream然后使用ByteArrayInputStream?读取?我有以下方法:

private byte[] getZippedBytes(final String fileName, final byte[] input) throws Exception {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    ZipOutputStream zipOut = new ZipOutputStream(bos);
    ZipEntry entry = new ZipEntry(fileName);
    entry.setSize(input.length);
    zipOut.putNextEntry(entry);
    zipOut.write(input, 0, input.length);
    zipOut.closeEntry();
    zipOut.close();

    //Turn right around and unzip what we just zipped
    ZipInputStream zipIn = new ZipInputStream(new ByteArrayInputStream(bos.toByteArray()));

    while((entry = zipIn.getNextEntry()) != null) {
        assert entry.getSize() >= 0;
    }

    return bos.toByteArray();
}
Run Code Online (Sandbox Code Playgroud)

当我执行此代码时,底部的断言失败,因为entry.size-1.我不明白为什么提取的实体与压缩的实体不匹配.

java zip bytearrayoutputstream bytearrayinputstream zipoutputstream

14
推荐指数
1
解决办法
2952
查看次数

在Android应用程序中关闭ByteArrayOutputStream

在Android应用程序中,我正在发送从中获取的图片,Camera Intent因此我需要将a Bitmap转换为字节数组.要做到这一点,我使用ByteArrayOutputStream如下:

private byte[] getRawImageData(Bitmap source) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    byte[] rawImageData = null;
    try {
        source.compress(CompressFormat.JPEG, DEFAULT_COMRESSION, baos);
        rawImageData = baos.toByteArray();
    } finally {
        try {
            baos.close();
        } catch (IOException e) {
            // handle exception here
        }
    }
    return rawImageData;
}
Run Code Online (Sandbox Code Playgroud)

一切都运行正常,真正的问题是ByteArrayOutputStreamjavadoc与Android 文档之间的差异.

Javadoc中读取

关闭ByteArrayOutputStream无效.

Android的文档读取:

关闭此流.这将释放用于此流的系统资源.

我正在关闭流不管什么,但我想知道哪些文档是正确的以及为什么它们是不同的.

java android bytearrayoutputstream

12
推荐指数
1
解决办法
3006
查看次数

如何同时使用ByteArrayOutputStream和DataOutputStream(Java)

我在这里遇到了很多问题,我认为这是因为我不太了解如何使用Java提供的API.

我需要写一个intbyte[]一个byte[]

我想用a DataOutputStream来解决数据写入writeInt(int i)write(byte[] b),并且能够把它放到一个字节数组中,我应该使用ByteArrayOutputStream方法toByteArray().

我知道这个类使用Wrapper模式,所以我有两个选择:

DataOutputStream w = new DataOutputStream(new ByteArrayOutputStream());
Run Code Online (Sandbox Code Playgroud)

要么

ByteArrayOutputStream w = new ByteArrayOutputStream(new DataOutputStream());
Run Code Online (Sandbox Code Playgroud)

但在这两种情况下,我都"松散"了一种方法.在第一种情况下,我无法访问该toByteArray()方法,而在第二种情况下,我无法访问该writeInt()方法.

我应该如何一起使用这些课程?

java wrapper dataoutputstream bytearrayoutputstream

11
推荐指数
1
解决办法
6万
查看次数