首页 > 其他分享 >ByteArrayOutputStream用法---读写类型数据

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

时间:2022-09-22 11:55:24浏览次数:86  
标签:字节 int 读写 --- ByteArrayOutputStream new bout byte

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 

分类: java基础工具包   _____________________________________________________________________________________    

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的用法

于 2016-08-26 16:05:02 发布28133 收藏 46 分类专栏: Java基础   Java基础专栏收录该内容 27 篇文章0 订阅 订阅专栏 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.  

标签:字节,int,读写,---,ByteArrayOutputStream,new,bout,byte
From: https://www.cnblogs.com/kelelipeng/p/16718745.html

相关文章

  • MBR30300VCT-ASEMI肖特基MBR30300VCT二极管
    编辑:llMBR30300VCT-ASEMI肖特基MBR30300VCT二极管型号:MBR30300VCT品牌:ASEMI封装:TO-220AB特性:肖特基二极管正向电流:30A反向耐压:300V恢复时间:50~100ns引脚数量:3芯......
  • C语言进阶-动态内存管理
    C语言进阶之动态内存管理前言C语言一、为什么存在动态内存分配我们已经掌握的内存开辟方式有:intval=20;//在栈空间上开辟四个字节chararr[10]={0};//在栈空间......
  • ORA-00439 未启用的功能
    在oracle11.2.0.1里面创建分区表的时候出现ora-00439未启用功能:partitioning进行检查:1:安装的版本为OracleDatabase11gEnterpriseEditionRelease11.2.0.1.0-64bit......
  • linux端口查看-netstat
    netstatnetstat命令用于显示与IP、TCP、UDP、ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接......
  • 数字IC手撕代码-分频器(任意奇数分频)
    大家好我是酸菜鱼,这个系列着重讲解数字ic或FPGA实习面试及秋招面试的高频手撕代码题。什么是分频    分频就是生成一个新时钟,该新时钟的频率是原有时钟频率......
  • oso -- Batteries-Included Authorization
    osohttps://github.com/osohq/osoOsoisabatteries-includedframeworkforbuildingauthorizationinyourapplication.OSO是一款功能齐全的框架,可以在应用中使用......
  • 方法引用基本介绍和方法引用-通过对象名引用成员方法
    方法引用基本介绍在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案:拿什么参数做什么操作,那么考虑一种情况:如果我们在Lambda中所指定的操作方案,已经有地......
  • 数字IC手撕代码-分频器(任意小数分频)
    什么是分频    分频就是生成一个新时钟,该新时钟的频率是原有时钟频率的整数分之一倍,新周期是原有周期的整数倍。        再简单来说,让你手撕一个四分频......
  • 数字IC手撕代码-序列检测(移位寄存器写法)
    大家好我是酸菜鱼,这个系列着重讲解数字ic或FPGA实习面试及秋招面试的高频手撕代码题。本文具体内容涉及:利用移位寄存器写序列检测。        一说到序列检测,你脑......
  • 数字IC手撕代码-序列检测(状态机写法)
    大家好我是酸菜鱼,这个系列着重讲解数字ic或FPGA实习面试及秋招面试的高频手撕代码题 具体内容涉及:        一说到序列检测,你脑子里要立马跳出两种解法,一种是状......