内存流是将流的输入输出位置放到内存上,而不是建立在内存和外部设备之间,此时的操作应该以内存为操作点,和Java程序在一起,可以看做是java和内存中的数据之间的交互。
应用:网络传输,会将文件放到内存,这时需要用内存流读取到java。
主要构造方法
//参数是byte类型数组
ByteArrayInputStream bais = new ByteArrayInputStream(byte[] buf);
//内存输出流
ByteArrayOutputStream baos = new ByteArrayOutputStream();
内存输入流ByteArrayInputStream主要成员方法
//从该输入流读取下一个数据字节
int read();
read(byte[] b, int off, int len);
//关闭流
void close();
内存输出流ByteArrayOutputStream主要成员方法
//写入
void write(int b);
void write(byte[] b, int off, int len);
//关闭流
void close();
案例演示
/**
* 要求:将读取到的大写字母转为小写字母输出
*/
public static void main(String[] args) throws IOException {
String str = "ABCDEF";
//创建流
ByteArrayInputStream bais = new ByteArrayInputStream(str.getBytes());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//读取,注意read()方法返回值是int类型
int d = -1;
while ((d = bais.read()) != -1) {
char c = Character.toLowerCase((char) d); //int强转为char
baos.write(c); //这里的char又转为int类型,属于默认转型,调用void write(int b)
}
bais.close();
baos.close();
System.out.println(baos.toString());
}
//打印结果
abcdef