版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuming226/article/details/84501081
什么是内存输出流
该输出流可以向内存中写数据,把内存当作一个缓冲区,写出之后可以一次性获取所有数据。
使用方式
1、创建对象:new ByteArrayOutStream()。
2、写出数据:write(int),write(byte[])。
3、获取数据:toByteArray()。
注意点
代码演示如下:
package zifu;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Demo14_ByteArrayOutStream {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("10.txt");
ByteArrayOutputStream baos = new ByteArrayOutputStream();//在内存中创建了可以增长的内存数组
//byte[] array = new byte[3];
int b;
/*while ((b = fis.read(array)) != -1) {
System.out.println(new String(array,0,b));
}*/
while ((b = fis.read()) != -1) {//将读取到的数据逐个写到内存中
baos.write(b);
}
byte[] arr = baos.toByteArray(); //将缓冲区的数据全部获取出来,并赋值给arr数组。
System.out.println(new String(arr));
fis.close();
}
}
定义一个文件输入流,调用read(byte[] b)方法,将a.txt文件中的内容打印出来(byte数组大小限制为5)
package zifu;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Demo15_Test {
public static void main(String[] args) throws IOException {
//1,read(byte[] b)是字节输入流的方法,创建FileInputStream,关联a.txt
FileInputStream fis = new FileInputStream("10.txt");
//2,创建内存输出流,将读到的数据写到内存输出流中
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//3,创建字节数组,长度为5
byte[] arr = new byte[5];
int len;
while ((len = fis.read(arr)) != -1) {
baos.write(arr,0,len);
}
//4,将内存输出流的数据全部转换为字符串打印
System.out.println(baos);
//5,关闭输入流
fis.close();
}
}