ByteArrayOutputStream用法---读写类型数据

ByteArrayOutputStream用法

 

字节数组流:
ByteArrayOutputStream:    可以捕获内存缓冲区的数据,转换成字节数组。
ByteArrayoutputStream bout=new ByteArrayOutputStream();
bout.write(int a);  bout.write(int b);  bout.write(int c);
byte[] buf=bout.toByteArray();//获取内存缓冲中的数据
for(int i=0;i<=buf.length;i++)
{
  System.out.println(buf);
}
bout.close();
注:通过调用reset()方法可以重新定位。
ByteArrayInputStream: 可以将字节数组转化为输入流
ByteArrayInputStream bin=new ByteArrayInputStream(byte[] buf);
int data=0;
while( (b=bin.read())!=-1)
{
  System.out.println(b);
}
bin.close();

与DataOutputStream&DataInputStream联合使用:
ByteArrayOutputStream bout=new ByteArrayOutputStream();
DataOutputStream dos=new DataOutputStream(bout);
String name="suntao";
int age=19;
dos.writeUTF(name);
dos.writeInt(age);
byte[] buf=bout.toByteArray();//获取内存缓冲区中的数据
dos.close();
bout.close();

ByteArrayInputStream bin=new ByteArrayInputStream(byte[] buf);
DataInputStream dis=new DataInputStream(bin);
String name=dis.readUTF();//从字节数组中读取
int age=dis.readInt();
dis.close();
bin.close();

注:  DataInputStream&DataOutputStream还可以与FileInputStream&FileOutputStream
联合使用。
其中:
DataInputStream&DataOutputStream关心如何将数据从高层次的形式转化成低层次的形式.
FileInputStream&FileOutputStream关心如何操作存储单元以接受和产生数据。

 转自:https://www.cnblogs.com/mayola/archive/2011/11/17/2252646.html 

 
_____________________________________________________________________________________
 
 

ByteArrayOutputStream的用法

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

ByteArrayOutputStream:    可以捕获内存缓冲区的数据,转换成字节数组

ByteArrayInputStream: 可以将字节数组转化为输入流

public static void main(String[] args) { 
    int a = 0; 
    int b = 1; 
    int c = 2; 
    ByteArrayOutputStream bout = new ByteArrayOutputStream(); 
    bout.write(a); 
    bout.write(b); 
    bout.write(c); 
    byte[] buff = bout.toByteArray(); 
    for (int i = 0; i < buff.length; i++) 
        System.out.println(buff[i]); 
    System.out.println("***********************"); 
    ByteArrayInputStream bin = new ByteArrayInputStream(buff); 
    while ((b = bin.read()) != -1) { 
        System.out.println(b); 
    } 
}

 

如上所示,ByteArrayOutputStream把内存中的数据读到字节数组中,而ByteArrayInputStream又把字节数组中的字节以流的形式读出,实现了对同一个字节数组的操作. 
综合DataOutputStream&DataInputStream的作用和功能,与ByteArrayOutputStream和ByteArrayInputSream使用将更方便.此时DataOutputStream&DataInputStream封闭了字节流,以适当的形式读出了字节数组中的数据.如下所示:

public static void main(String[] args) throws IOException { 
    ByteArrayOutputStream bout = new ByteArrayOutputStream(); 
    DataOutputStream dout = new DataOutputStream(bout); 
    String name = "xxy"; 
    int age = 84; 
    dout.writeUTF(name); 
    dout.writeInt(age); 
    byte[] buff = bout.toByteArray(); 
    ByteArrayInputStream bin = new ByteArrayInputStream(buff); 
    DataInputStream dis = new DataInputStream(bin); 
    String newName = dis.readUTF(); 
    int newAge = dis.readInt(); 
    System.out.println(newName + ":" + newAge); 
}

********************************************************************************

 

ByteArrayOutputStream及其在IO中的应用

一、基本概念

在创建ByteArrayOutputStream类实例时,内存中会创建一个byte数组类型的缓冲区,缓冲区会随着数据的不断写入而自动增长。

可使用toByteArray()和toString()获取数据。

关闭ByteArrayOutputStream无效,此类中的方法在关闭此流后仍可被调用,而不会产生任何IOException

    /**
     * 读取文件内容
     * 
     * @param filename 文件名
     * @return
     */
    public String read(String filename) throws Exception
    {
        FileInputStream fis = new.FileInputStream(filename); 
        ByteArrayOutputStream outStream = new ByteArrayOutputStream(); 
        byte[] buffer = new byte[1024];
        int len = 0;
        // 将内容读到buffer中,读到末尾为-1
        while ((len = fis.read(buffer)) != -1)
        {
            // 本例子将每次读到字节数组(buffer变量)内容写到内存缓冲区中,起到保存每次内容的作用
            outStream.write(buffer, 0, len);
        }
        byte[] data = outStream.toByteArray(); // 取内存中保存的数据
        fis.close();
        String result = new String(data, "UTF-8");
        return result;
    }

 

 

 

 

 

 

ByteArrayOutputStream的用法

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

ByteArrayOutputStream:    可以捕获内存缓冲区的数据,转换成字节数组 

ByteArrayInputStream: 可以将字节数组转化为输入流

  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封闭了字节流,以适当的形式读出了字节数组中的数据.如下所示:

 

 

  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及其在IO中的应用

一、基本概念

在创建ByteArrayOutputStream类实例时,内存中会创建一个byte数组类型的缓冲区,缓冲区会随着数据的不断写入而自动增长。

可使用toByteArray()和toString()获取数据。

关闭ByteArrayOutputStream无效,此类中的方法在关闭此流后仍可被调用,而不会产生任何IOException

  1.  
    /**
  2.  
    * 读取文件内容
  3.  
    *
  4.  
    * @param filename 文件名
  5.  
    * @return
  6.  
    */
  7.  
    public String read(String filename) throws Exception
  8.  
    {
  9.  
    FileInputStream fis = new.FileInputStream(filename);
  10.  
    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
  11.  
    byte[] buffer = new byte[1024];
  12.  
    int len = 0;
  13.  
    // 将内容读到buffer中,读到末尾为-1
  14.  
    while ((len = fis.read(buffer)) != -1)
  15.  
    {
  16.  
    // 本例子将每次读到字节数组(buffer变量)内容写到内存缓冲区中,起到保存每次内容的作用
  17.  
    outStream.write(buffer, 0, len);
  18.  
    }
  19.  
    byte[] data = outStream.toByteArray(); // 取内存中保存的数据
  20.  
    fis.close();
  21.  
    String result = new String(data, "UTF-8");
  22.  
    return result;
  23.  
    }
  24.  
posted @ 2022-09-22 11:47  kelelipeng  阅读(3329)  评论(0编辑  收藏  举报