22.1 内存流(重点掌握)
22.1.1 什么是内存流
当输出流的目的,和输入流的源是内存时,这样的流称之为内存流。(就是将数据写入RAM)
22.1.2 内存流的构造方法
ByteArrayInputStream(byte buf[]); 创建一个 ByteArrayInputStream 并把指定该输入流的数据源buf[]。
ByteArrayOutputStream(); 创建一个 ByteArrayOutputStream 并把分配一个32字节(默认大小)的缓冲区。
ByteArrayOutputStream(int size); 创建一个 ByteArrayOutputStream 并分配自定 size 字节的缓冲区。
22.1.3 读取内存数据和写入到内存数据
22.1.3.1 读取内存数据
try {
String testContent = "ABCDEFG";//程序运行的时候 这数据本身就在内存,
ByteArrayInputStream bais = new ByteArrayInputStream(testContent.getBytes());//创建内存输入流,指定要读取的数据 byte[]
int read;
while ((read = bais.read()) != -1) {//和普通流读取字节是一样的(也可以嵌套管道)
System.out.println((char) read);
}
bais.close();//关闭流,释放内存资源
}...
22.1.3.2 写入数据到内存
try {
String testContent = "ABCDEFG";
ByteArrayOutputStream baos = new ByteArrayOutputStream();//创建内存输出流,把数据写入到内存中
baos.write(testContent.getBytes());//和普通的输出流写输入一样,(也可以嵌套管道)
baos.flush();
baos.close();
}...
22.1.4 ByteArrayOutputStream 常用方法:toByteArray(), toString()
toByteArray() 方法;是将 ByteArrayOutputStream 对象所写入到内存的数据 转换成 byte[] 返回。
toString() 方法 ;是将 ByteArrayOutputStream 对象所写入到内存的数据 转换成 String 返回。
提示:内存流 除了 ByteArrayInputStream 与 ByteArrayOutputStream 主要处理字节数据之外,对应的还有:
CharArrayReader 与 CharArrayWriter 主要处理字符数组。
StringReader 与 StringWriter 主要处理字符串。(其内部就是使用的StringBuffer)
使用方式大同小异。
笔记: 1.为更好的理解和使用,可以把内存输出流当作 XXXBuffer / XXXBuilder 来理解,都是用来在内存中缓冲一个XXX数组: ByteArrayOutputStream ---> ByteBuffer(实际不存在) CharArrayWriter ---> CharBuffer(实际不存在) StringWriter ---> StringBuffer ... 2.而内存输入流,则是在内存中读取 XXX数组。