• 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. }  
  • 相关阅读:
    ubuntu 16.04 连接 wifi
    Linux性能检测常用的10个基本命令
    《机器学习基石》笔记整理(1)
    ubuntu 16.04 +anaconda3.6 +Nvidia DRIVER 390.77 +CUDA9.0 +cudnn7.0.4+tensorflow1.5.0+neural-style
    ubuntu 16.04 + 中文输入法
    Win10下安装Ubuntu16.04双系统
    Ubuntu16.04+GTX1080配置TensorFlow并实现图像风格转换
    Neural Style论文笔记+源码解析
    5分钟让你看懂高斯模糊算法
    我的机器学习入门路线图
  • 原文地址:https://www.cnblogs.com/htys/p/3247490.html
Copyright © 2020-2023  润新知