`
f543711700
  • 浏览: 326933 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

读取图片数据到byte[]数组,合并inputStream每次读取产生的缓冲byte[]

 
阅读更多
第一次写文章。

刚才写了一个图片以二进制的形式读取到byte[]数组中去的程序,存在的一个问题是:循环进行InputStream.read(byte[] buffer), 每次读取一定量的字节(数量未知)的数据,都会清空前一次的buffer数组,所以必须要将每次得到的buffer保存起来,最后将所有的buffer合并成一个总共的buffer数组,刚才实现了,害怕忘了,觉得有必要记录一下!

image对象有三个属性,id,name和content,类型分别是:int,String,byte[]


InputStream is = fileItem.getInputStream();

Image image = new Image();
image.setId(9);
image.setName(fileItem.getName());

byte[] buffer = new byte[1024*50];
int length = 0;
byte[] totalBuffer = new byte[1024*50];

for(int lastLength = 0; (length = is.read(buffer)) > 0;lastLength =  lastLength + length) {
    System.arraycopy(buffer, 0, totalBuffer, lastLength, length);
}

is.close();

image.setContent(totalBuffer);


主要就是这一段,其他的文件上传之类的就不说了,没什么好说的!
2
3
分享到:
评论

相关推荐

    java InputStream读取数据问题

    当我们遇到“Java InputStream读取数据问题”时,通常涉及到如何正确、有效地使用`InputStream`及其子类来处理数据输入。 在给定的博客链接(由于实际链接无法访问,以下内容基于常见问题进行假设)中,可能讨论了...

    原理讲解-ServletInputStream.readLine(byte[] b, int off, int len) 方法

    1. `byte[] b`:这是一个字节数组,用作缓冲区,用于存储从输入流中读取的数据。 2. `int off`:偏移量,表示从数组 `b` 的哪个位置开始写入数据。 3. `int len`:长度,表示最多能从输入流中读取多少个字节到数组 `...

    j2me系统文件的操作(包括把图片byte化)

    本文将深入探讨如何在J2ME环境中进行系统文件操作,特别是涉及图片处理,包括将图片转化为byte数组的过程。 首先,我们要了解J2ME的基础。J2ME由一系列配置和 profiles 组成,如MIDP(Mobile Information Device ...

    Java实现字节流与图片的转化

    在Java编程中,字节流(Byte Stream)是处理数据的基本方式,特别是在处理二进制数据,如图片、音频或视频文件时。本教程将详细讲解如何使用Java实现字节流来转换和处理图片。 首先,我们需要理解字节流的概念。在...

    Java应用程序读取图片内容.zip

    在Java编程语言中,读取图片内容是一项常见的任务,尤其在开发图形用户界面(GUI)应用、处理图像数据或进行图像分析时。本教程将详细解释如何使用Java来读取和处理图片。以下是一些核心知识点: 1. **Java Image I...

    用JAVA实现缓冲多线程无阻塞读取远程文件.pdf

    - `java.io.InputStream.read(byte[] b, int off, int len)`: 读取数据到字节数组,返回读取的字节数。 - `java.io.InputStream.close()`: 关闭输入流并释放与流相关的系统资源。 2. 多线程编程 - `java.lang....

    使用字节流方式操作文件,读取和写入文件

    然后,我们可以使用`read()`方法来读取字节,或者使用`read(byte[] b)`方法一次性读取多个字节到字节数组中。 **写入文件:** 对于写入操作,我们使用`FileOutputStream`。创建实例后,我们使用`write(int b)`或`...

    Java中几个文件输入流和文件输出流的研究.pdf

    4. 读取方法:public int read(byte[] b) throws IOException:从此缓冲输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。 5. 写入方法:public void write(int b) throws IOException:将指定字节写入此...

    字节流实现从文件以字节读取信息

    - 使用`aInputStream.read(buf)`方法读取数据到缓冲区`buf`中。`read`方法返回实际读取到的字节数,如果返回值小于等于0,则表示没有更多的数据可读。 - 将读取到的数据写入到`ByteArrayOutputStream`中。`baos....

    Java字节流数据逐行读取(readLine)

    在Java编程中,字节流(Byte Stream)是处理数据的一种基本方式,它适用于任何类型的数据,包括文本、图片、音频等。字节流主要分为输入流和输出流,其中InputStream类是所有字节输入流的基类,而OutputStream类则是...

    图片转流存库和读取二进制流页面展示

    4. **读取输入流**: 使用`URLConnection`对象的`getInputStream()`方法获取一个输入流,用于读取图片数据。 5. **转换为字节数组**: 将输入流中的数据逐块读取出来,最终合并成一个完整的字节数组。 ```java public...

    Android读取本地json文件的方法(解决显示乱码问题)

    在Android应用开发中,有时我们需要从本地存储的JSON文件中读取数据,这通常涉及到文件I/O操作和字符编码处理。以下将详细讲解如何在Android中读取本地JSON文件,并解决可能出现的显示乱码问题。 1. **读取本地JSON...

    缓冲流&转换流习题答案1

    在文件复制过程中,`BufferedInputStream`的`read(byte[] buffer)`方法会一次性读取缓冲区大小的数据,如果读取到文件末尾,返回-1。每次读取到的数据通过`BufferedOutputStream`的`write(byte[] buffer, int off, ...

    java从输入流中获取数据并返回字节数组示例

    }`:使用 `read()` 方法从输入流读取数据到缓冲区,如果成功读取,`read()` 返回读取的字节数,否则返回 `-1` 表示到达流的末尾。循环继续直到没有更多数据可读。 - `outputStream.write(buffer, 0, len);`:将...

    java读取大字段blob类型

    - **性能优化**:考虑到性能因素,在读取`BLOB`数据时可以适当调整缓冲区大小以平衡读取速度和内存占用。 - **安全性**:使用`PreparedStatement`可以有效防止SQL注入攻击,提高系统的安全性。 - **异常处理**:对于...

    BufferedInputStream(缓冲输入流)详解_动力节点Java学院整理

    * `read(byte[] buffer, int offset, int byteCount)`: 读取输入流的数据到指定的缓冲区中。 * `reset()`: 将当前位置重置到 mark() 方法标记的位置。 * `skip(long byteCount)`: 跳过指定数量的字节。 ...

    java文本读取方法

    - **`InputStream#read(byte[])`方法:**此方法用于读取一系列字节到字节数组中,返回实际读取的字节数,如果到达文件末尾则返回-1。 - **异常处理:**通过`try-catch-finally`结构来确保即使发生异常也能正确关闭流...

    Java流(文件读写操作)

    - **BufferedReader**:用于处理字符数据的输入缓冲流,增加了`readLine()`方法用于读取一行数据。 - **BufferedWriter**:用于处理字符数据的输出缓冲流,增加了`newLine()`方法用于写入新的一行。 - **...

    Java 文件读取器

    这个类提供了一些基本的读取方法,如`read()`用于读取单个字节,`read(byte[])`用于读取多个字节到缓冲区。`InputStream`通常用于处理二进制数据,例如图像、音频或任何非文本格式的数据。 使用`InputStream`的一个...

Global site tag (gtag.js) - Google Analytics