字节数组流
ByteArrayInputStream和ByteArrayOutputStream都是用于需要流和数组转换的情况!
字节数组输入流
说白了,FIleInputStream是把文件当做数据源,而ByteArrayInputStream是把内存中的字节数组当作数据源
import java.io.ByteArrayInputStream;
/**
* @author Mxhlin
* @email [email protected]
* @introduce 字节数组输入流
*/
public class ByteArrayIinputStream {
public static void main(String[] args) {
ByteArrayInputStream bais = null;
byte[] arr = "adjwlakj".getBytes();
// 创建一个数组用于存放输入流数据源
StringBuilder sb = null;
try {
// 这里参数需要字节数组,这里的字节数组就是数据源
bais = new ByteArrayInputStream(arr);
sb = new StringBuilder();
int temp = 0;
while((temp = bais.read()) != -1){
// 因为这里的temp是int整数 所以要把它转换为字节
sb.append((char) temp);
}
System.out.println(sb.toString());
}finally {
try {
bais.close();
}catch (Exception e){
e.fillInStackTrace();
}
}
}
}
运行结果
字节数组输出流
ByteArrayOutputStream流对象将流中的对象输出到字节数组里
import java.util.Scanner;
/**
* @author Mxhlin
* @email [email protected]
* @introduce 字节数组输出流
*/
public class ByteArrayOutputStream {
public static void main(String[] args) {
java.io.ByteArrayOutputStream bot = null;
try {
bot = new java.io.ByteArrayOutputStream();
bot.write('a');
bot.write('b');
bot.write('c');
// 把数据放在数组里
byte[] arr = bot.toByteArray();
for (int i=0 ; i < arr.length ; i++){
System.out.println((char)arr[i]);//
}
}finally {
try {
if (bot != null){
bot.close();
}
}catch (Exception e){
e.fillInStackTrace();
}
}
}
}
运行结果: