• byte[]和InputStream的相互转换


    Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer。Java中其他多种多样变化的流均是由它们派生出来的:

    在这四个抽象类中,InputStream和Reader定义了完全相同的接口:

    int read()
    int read(char cbuf[])
    int read(char cbuf[], int offset, int length)

      而OutputStream和Writer也是如此:

    int write(int c)
    int write(char cbuf[])
    int write(char cbuf[], int offset, int length)

    这六个方法都是最基本的,read()和write()通过方法的重载来读写一个字节,或者一个字节数组。

    1:byte[]转换为InputStream 
    InputStream sbs = new ByteArrayInputStream(byte[] buf); 

    2:InputStream转换为InputStreambyte[] 
    ByteArrayOutputStream swapStream = new ByteArrayOutputStream(); 
    byte[] buff = new byte[100]; //buff用于存放循环读取的临时数据 
    int rc = 0; 
    while ((rc = inStream.read(buff, 0, 100)) > 0) { 
    swapStream.write(buff, 0, rc); 
    } 
    byte[] in_b = swapStream.toByteArray(); //in_b为转换之后的结果 

    Java代码  收藏代码
    1. import java.io.ByteArrayInputStream;  
    2. import java.io.ByteArrayOutputStream;  
    3. import java.io.IOException;  
    4. import java.io.InputStream;  
    5.   
    6. public class ByteToInputStream {  
    7.   
    8.     public static final InputStream byte2Input(byte[] buf) {  
    9.         return new ByteArrayInputStream(buf);  
    10.     }  
    11.   
    12.     public static final byte[] input2byte(InputStream inStream)  
    13.             throws IOException {  
    14.         ByteArrayOutputStream swapStream = new ByteArrayOutputStream();  
    15.         byte[] buff = new byte[100];  
    16.         int rc = 0;  
    17.         while ((rc = inStream.read(buff, 0100)) > 0) {  
    18.             swapStream.write(buff, 0, rc);  
    19.         }  
    20.         byte[] in2b = swapStream.toByteArray();  
    21.         return in2b;  
    22.     }  
    23.   
    24. }  
  • 相关阅读:
    Inno Setup打包程序添加hosts解析
    elasticsearch安装教程
    初级模拟电路:10-2 分贝与伯德图
    初级模拟电路:10-1 对数图与分贝
    初级模拟电路:9-4 运放的数据规格书(v2)
    初级模拟电路:9-4 运放的数据规格书
    初级模拟电路:9-3 运放的其他参数
    重新部署Azure虚拟机
    Linux-NFS(网络文件系统)服务开启
    STM32_使用DAC双通道同时输出对齐的三角波和方波
  • 原文地址:https://www.cnblogs.com/htys/p/3247490.html
Copyright © 2020-2023  润新知