【JavaIO】Java内存流

Java提供了三组内存流,它们是:

字节数组流:ByteArrayInputStream/ByteArrayOutputStream

字符数组流:CharArrayReader/CharArrayWriter

字符串流:StringReader/StringWriter

它们都是节点流,数据源都是内存中的一块数据。

字节数组流

package com.zzj.io;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class ByteArrayStreamTest {
	public static void main(String[] args) throws IOException {
		byte[] bs = "Hello, world!".getBytes();
		InputStream in = byteArrayToInputStream(bs);
		byte[] outBs = inputStreamToByteArray(in);
		in.close();
		System.out.println(new String(outBs));
	}

	/**
	 * 字节数组转字节流
	 * 
	 * @param bs
	 * @return
	 */
	public static InputStream byteArrayToInputStream(byte[] bs) {
		return new ByteArrayInputStream(bs);
	}

	/**
	 * 字节流转字节数组
	 * 
	 * @param inputStream
	 * @return
	 * @throws IOException
	 */
	public static byte[] inputStreamToByteArray(InputStream inputStream)
			throws IOException {
		BufferedInputStream bufferedIn = new BufferedInputStream(inputStream);
		ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
		BufferedOutputStream bufferedOut = new BufferedOutputStream(
				byteArrayOut);
		int count;
		byte[] temps = new byte[1024];
		while ((count = bufferedIn.read(temps)) > -1) {
			bufferedOut.write(temps, 0, count);
			bufferedOut.flush();
		}
		bufferedOut.close();
		// 内存流即使关闭了仍然可以使用
		return byteArrayOut.toByteArray();
	}
}
字符数组流和字符串流的使用也差不多,但是不经常使用。

你可能感兴趣的:(【JavaIO】Java内存流)