`

ByteArrayOutputStream的用法

    博客分类:
  • java
阅读更多

转:http://shiwj1010.iteye.com/blog/382115

ByteArrayOutputStream类是在创建它的实例时,程序内部创建一个byte型别数组的缓冲区,然后利用ByteArrayOutputStream和ByteArrayInputStream的实例向数组中写入或读出byte型数据。在网络传输中我们往往要传输很多变量,我们可以利用ByteArrayOutputStream把所有的变量收集到一起,然后一次性把数据发送出去。具体用法如下: 
ByteArrayOutputStream:    可以捕获内存缓冲区的数据,转换成字节数组 

ByteArrayInputStream: 可以将字节数组转化为输入流 
Java代码  收藏代码
  1. public static void main(String[] args) {  
  2.     int a = 0;  
  3.     int b = 1;  
  4.     int c = 2;  
  5.     ByteArrayOutputStream bout = new ByteArrayOutputStream();  
  6.     bout.write(a);  
  7.     bout.write(b);  
  8.     bout.write(c);  
  9.     byte[] buff = bout.toByteArray();  
  10.     for (int i = 0; i < buff.length; i++)  
  11.         System.out.println(buff[i]);  
  12.     System.out.println("***********************");  
  13.     ByteArrayInputStream bin = new ByteArrayInputStream(buff);  
  14.     while ((b = bin.read()) != -1) {  
  15.         System.out.println(b);  
  16.     }  
  17. }  

如上所示,ByteArrayOutputStream把内存中的数据读到字节数组中,而ByteArrayInputStream又把字节数组中的字节以流的形式读出,实现了对同一个字节数组的操作. 

综合DataOutputStream&DataInputStream的作用和功能,与ByteArrayOutputStream和ByteArrayInputSream使用将更方便.此时DataOutputStream&DataInputStream封闭了字节流,以适当的形式读出了字节数组中的数据.如下所示: 
Java代码  收藏代码
  1. public static void main(String[] args) throws IOException {  
  2.     ByteArrayOutputStream bout = new ByteArrayOutputStream();  
  3.     DataOutputStream dout = new DataOutputStream(bout);  
  4.     String name = "xxy";  
  5.     int age = 84;  
  6.     dout.writeUTF(name);  
  7.     dout.writeInt(age);  
  8.     byte[] buff = bout.toByteArray();  
  9.     ByteArrayInputStream bin = new ByteArrayInputStream(buff);  
  10.     DataInputStream dis = new DataInputStream(bin);  
  11.     String newName = dis.readUTF();  
  12.     int newAge = dis.readInt();  
  13.     System.out.println(newName + ":" + newAge);  
  14. }  

分享到:
评论

相关推荐

    ByteArrayOutputStream简介和使用_动力节点Java学院整理

    ByteArrayOutputStream 是字节数组输出流。它继承于OutputStream。 ByteArrayOutputStream 中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。

    Java使用ByteArrayOutputStream 和 ByteArrayInputStream 避免重复读取配置文件的方法

    它接受一个字节数组作为构造函数的参数,然后我们可以使用 `read()` 方法逐个读取字节,或者 `read(byte[] b, int off, int len)` 方法读取到指定的字节数组中。通过这种方式,我们可以在不依赖外部文件或网络连接的...

    【IT十八掌徐培成】Java基础第16天-04.ByteArrayInputStream-ByteArrayOutputStream.zip

    它的构造函数接受一个byte数组作为参数,然后我们可以调用read()方法来逐个读取字节,或者使用read(byte[])方法一次性读取多个字节到指定的缓冲区。 例如,如果你有一个包含图像数据的字节数组,你可以创建一个...

    InputStream与OutputStream及File间互转

    一种常见的方法是先将`OutputStream`的数据写入内存中的`ByteArrayOutputStream`,然后再将其转换为`InputStream`: ```java ByteArrayOutputStream baos = new ByteArrayOutputStream(); OutputStream out = ...

    androidtxtfile_android源码_

    3. **读取文件并写入`ByteArrayOutputStream`**:接下来,你可以使用`FileInputStream`的`read()`方法读取文件内容,并通过`ByteArrayOutputStream`的`write()`方法将字节写入。 ```java int read; while ((read = ...

    IO流各个类的使用方法

    介绍了,下面这些类的具体使用方法,非常详细,值得一看 File FileFilter RandomAccessFile 【字节流】 InputStream OutputStream FileInputStream FileOutputStream DataInputStream DataOutputStream ...

    androidbitmap的用法.pdf

    它创建一个`ByteArrayOutputStream`,然后使用`compress()`方法将Bitmap压缩成PNG格式(可选择其他格式),压缩质量设置为100(即无损压缩),最后将`ByteArrayOutputStream`的内容转换为byte数组。 4. **byte[]到...

    android Bitmap用法总结

    当我们需要将一个Drawable对象(如从XML布局文件中加载的图像)转换为Bitmap时,可以使用以下方法: ```java public static Bitmap drawableToBitmap(Drawable drawable) { Bitmap bitmap = Bitmap.createBitmap...

    将Bitmap转成byte[]小例子

    要将Bitmap对象转换为byte数组,我们可以使用Bitmap的compress()方法。这个方法可以将Bitmap以特定的格式(如JPEG或PNG)压缩并写入到一个OutputStream中。以下是一个简单的示例: ```java public static byte[] ...

    android中AsyncTask的用法

    下面我们将详细探讨AsyncTask的用法及其相关知识点。 首先,AsyncTask有三个泛型参数:Params、Progress和Result。Params代表启动任务时所需的输入参数,通常用于传递执行任务所需的初始数据。Progress表示任务执行...

    详解Java中ByteArray字节数组的输入输出流的用法

    使用ByteArrayOutputStream,可以通过write()方法将单个字节或整个字节数组写入输出流。当需要获取写入的所有字节时,可以调用toByteArray()方法来得到一个新的字节数组,或者使用toString()方法将其转换为字符串...

    Android中对图像进行Base64编码

    在这个例子中,我们首先创建一个`ByteArrayOutputStream`来保存Bitmap压缩后的数据,然后使用`compress()`方法将Bitmap以JPEG格式压缩,并设置质量为100(即无损)。接着,将压缩后的字节数组转换为Base64字符串。 ...

    JAVA 获得控制台的输出信息

    最后,代码使用`BufferedReader`从`ByteArrayOutputStream`中读取数据,并将每行输出存储到一个名为`XXXMap`的Map中,供后续处理使用。这一步骤确保了输出信息可以被结构化地存储和访问。 ```java BufferedReader ...

    java深度克隆

    3. **创建输入流**:使用`ByteArrayOutputStream`中的字节数组创建`ByteArrayInputStream`对象,并创建关联的`ObjectInputStream`对象,准备读取对象。 4. **反序列化对象**:通过`ObjectInputStream`的`readObject...

    Android图片处理工具类

    在这个例子中,我们首先创建一个`Bitmap`对象,然后使用`compress()`方法将其压缩为JPEG格式,并写入到`ByteArrayOutputStream`。接着,我们获取该流的字节数组,并使用`Base64.encodeToString()`进行编码。 2. ...

    JAVA IO流缓冲字节流缓冲字符流等流经典代码示例加注释总结.rar

    2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader...演示错误用法和经典用法。 4、代码的结构可查看README文件。

    java中把对象转化为byte数组的方法.pdf

    这种转换可以使用 ObjectOutputStream 和 ByteArrayOutputStream 完成。ObjectOutputStream 是一个流对象,它可以将对象写入到流中,ByteArrayOutputStream 是一个字节数组流对象,用于存储流中的数据。 在将对象...

    SpringMVC生成的验证码图片不显示问题及解决方法

    解决方法是设置浏览器不要缓存该图片,使用response.setHeader()方法设置Pragma、Cache-Control和Expires头信息。 知识点4: 404错误的解决方法 在本例中,验证码图片生成成功,但是却出现404错误。解决方法是检查...

    java filter打印请求返回参数

    - 使用`StreamUtil.readBytes()`方法将请求体中的数据读入一个`byte[]`数组。 - 创建一个新的`ByteArrayInputStream`实例并将其包装为`ServletInputStream`。 - 在`getInputStream()`方法中返回该`Servlet...

    Android中AsyncTask的用法实例[收集].pdf

    `doInBackground`方法中也使用了`ByteArrayOutputStream`和`InputStream`来读取输入流中的内容,并将其转换成字符串。这部分代码演示了如何从网络响应中读取数据,这可能包括处理不同字符编码、网络错误处理等。 `...

Global site tag (gtag.js) - Google Analytics