10、字节数组流

之前使用的流:FileInputStream,FileOutputStream,FileReader,FileWriter 他们的源头是文件,文件是存储在电脑硬盘上的,Java不能直接访问电脑硬盘的资源,必须借助操作系统,所以用完之后必须要通知操作系统释放资源

||
||
||

现在我们把源头换成电脑上的一块内存(字节数组),网络上的一块内存或远程服务器上的一块内存,Java可以直接访问内存,这一块的资源由垃圾回收机制gc来释放,所以用完之后不用释放资源。

注意点:
1、源头换成字节数组
2、资源不用释放
3、所有的数据都可以转成字节数组
4、内存有限,字节数组不建议太大

字节数组输入流:ByteArrayInputStream

//字节数组输入流
	public static void main(String[] args){
		//创建源
		byte[] src = "talk is cheap show me the code".getBytes();
		//选择流
		InputStream is = null;
		try {
			is = new ByteArrayInputStream(src);
			byte[] flush = new byte[10];//缓冲容器
			int len;
			while ((len = is.read(flush)) != -1) {
				String str = new String(flush,0,len);
				System.out.println(str);
			} 
		} catch (IOException e) {
			// TODO: handle exception
		}
	}

字节数组输出流:ByteArrayOutputStream

不同点:
源头内部维护
流不使用多态
可以不释放资源

//字节数组输出流
	public static void main(String[] args){
		//创建源(为null,为了格式统一)
		byte[] dest = null;
		//选择流(因为要用到新增方法,所以不要用多态)
		ByteArrayOutputStream baos = null;
		try {
			baos = new ByteArrayOutputStream();
			//操作:写入
			String msg = "show me the code";
			byte[] datas = msg.getBytes();
			baos.write(datas,0,datas.length);
			baos.flush();
			//获取数据
			dest = baos.toByteArray();
			System.out.println(dest.length+"-->"+new String(dest,0,baos.size()));
		} catch (IOException e) {
			// TODO: handle exception
		}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值