将输入流(InputStream)转换为字节数组(byte[])

 这段代码是一个Java方法,用于将输入流(InputStream)转换为字节数组(byte[])。

方法的实现过程如下:

  1. 创建一个ByteArrayOutputStream对象,用于存储从输入流中读取的数据。
  2. 定义一个大小为1024的字节数组b,用于临时存储从输入流中读取的数据。
  3. 使用while循环不断从输入流中读取数据,直到读取完毕(即is.read(b)返回-1)。
    • 在每次循环中,调用is.read(b)方法将数据读取到字节数组b中,并将实际读取到的字节数赋值给变量len。
    • 使用bos.write(b, 0, len)方法将读取到的数据写入到ByteArrayOutputStream对象中。
  4. 调用bos.toByteArray()方法将ByteArrayOutputStream对象转换为字节数组array。
  5. 关闭ByteArrayOutputStream对象。
  6. 返回转换后的字节数组array。
package day28.UpLoad;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
 * 此类用于演示关于流的读写方法
 *
 */
public class StreamUtils {
    /**
     * 功能:将输入流转换成 byte[]
     *
     * @param is
     * @return
     * @throws Exception
     */
    public static byte[] streamToByteArray(InputStream is) throws Exception {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();//创建输出流对象
        byte[] b = new byte[1024];
        int len;
        while ((len = is.read(b)) != -1) {
            bos.write(b, 0, len);
        }
        byte[] array = bos.toByteArray();
        bos.close();
        return array;
    }
}
/**
 * 功能:将 InputStream 转换成 String
 * @param
 * @return
 * @throws Exception
 */