第一次写文章。
刚才写了一个图片以二进制的形式读取到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);
主要就是这一段,其他的文件上传之类的就不说了,没什么好说的!
分享到:
相关推荐
当我们遇到“Java InputStream读取数据问题”时,通常涉及到如何正确、有效地使用`InputStream`及其子类来处理数据输入。 在给定的博客链接(由于实际链接无法访问,以下内容基于常见问题进行假设)中,可能讨论了...
1. `byte[] b`:这是一个字节数组,用作缓冲区,用于存储从输入流中读取的数据。 2. `int off`:偏移量,表示从数组 `b` 的哪个位置开始写入数据。 3. `int len`:长度,表示最多能从输入流中读取多少个字节到数组 `...
本文将深入探讨如何在J2ME环境中进行系统文件操作,特别是涉及图片处理,包括将图片转化为byte数组的过程。 首先,我们要了解J2ME的基础。J2ME由一系列配置和 profiles 组成,如MIDP(Mobile Information Device ...
在Java编程中,字节流(Byte Stream)是处理数据的基本方式,特别是在处理二进制数据,如图片、音频或视频文件时。本教程将详细讲解如何使用Java实现字节流来转换和处理图片。 首先,我们需要理解字节流的概念。在...
在Java编程语言中,读取图片内容是一项常见的任务,尤其在开发图形用户界面(GUI)应用、处理图像数据或进行图像分析时。本教程将详细解释如何使用Java来读取和处理图片。以下是一些核心知识点: 1. **Java Image I...
- `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)`或`...
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编程中,字节流(Byte Stream)是处理数据的一种基本方式,它适用于任何类型的数据,包括文本、图片、音频等。字节流主要分为输入流和输出流,其中InputStream类是所有字节输入流的基类,而OutputStream类则是...
4. **读取输入流**: 使用`URLConnection`对象的`getInputStream()`方法获取一个输入流,用于读取图片数据。 5. **转换为字节数组**: 将输入流中的数据逐块读取出来,最终合并成一个完整的字节数组。 ```java public...
在Android应用开发中,有时我们需要从本地存储的JSON文件中读取数据,这通常涉及到文件I/O操作和字符编码处理。以下将详细讲解如何在Android中读取本地JSON文件,并解决可能出现的显示乱码问题。 1. **读取本地JSON...
在文件复制过程中,`BufferedInputStream`的`read(byte[] buffer)`方法会一次性读取缓冲区大小的数据,如果读取到文件末尾,返回-1。每次读取到的数据通过`BufferedOutputStream`的`write(byte[] buffer, int off, ...
}`:使用 `read()` 方法从输入流读取数据到缓冲区,如果成功读取,`read()` 返回读取的字节数,否则返回 `-1` 表示到达流的末尾。循环继续直到没有更多数据可读。 - `outputStream.write(buffer, 0, len);`:将...
- **性能优化**:考虑到性能因素,在读取`BLOB`数据时可以适当调整缓冲区大小以平衡读取速度和内存占用。 - **安全性**:使用`PreparedStatement`可以有效防止SQL注入攻击,提高系统的安全性。 - **异常处理**:对于...
* `read(byte[] buffer, int offset, int byteCount)`: 读取输入流的数据到指定的缓冲区中。 * `reset()`: 将当前位置重置到 mark() 方法标记的位置。 * `skip(long byteCount)`: 跳过指定数量的字节。 ...
- **`InputStream#read(byte[])`方法:**此方法用于读取一系列字节到字节数组中,返回实际读取的字节数,如果到达文件末尾则返回-1。 - **异常处理:**通过`try-catch-finally`结构来确保即使发生异常也能正确关闭流...
- **BufferedReader**:用于处理字符数据的输入缓冲流,增加了`readLine()`方法用于读取一行数据。 - **BufferedWriter**:用于处理字符数据的输出缓冲流,增加了`newLine()`方法用于写入新的一行。 - **...
这个类提供了一些基本的读取方法,如`read()`用于读取单个字节,`read(byte[])`用于读取多个字节到缓冲区。`InputStream`通常用于处理二进制数据,例如图像、音频或任何非文本格式的数据。 使用`InputStream`的一个...