zoukankan      html  css  js  c++  java
  • 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. }  
  • 相关阅读:
    xshell+xftp破解版下载安装以及使用教程
    XFTP安装和Xshell配置
    spark-shell的Scala的一些方法详解
    Xshell连接Linux系统
    虚拟机的使用克隆及网络配置
    dochub批量上传教程
    可汗儿童版kids安卓版下载安装教程
    2020年MySQL数据库面试题总结(50道题含答案解析)
    什么是a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站…z站?
    ApacheCN JavaWeb 译文集 20211017 更新
  • 原文地址:https://www.cnblogs.com/htys/p/3247490.html
Copyright © 2011-2022 走看看