Java重用Inputstream流

2018-12-03 17:37:29

Java重用InputStream流

InputStream流只能用一次,用了就没了。某些情况下,需要重用InputStream流。可以采用如下方法

  1. //获取流
  2. InputStream inputStream = Files.newInputStream(Paths.get("E:\\404.jpg"));
  3. //在内存定义输出流
  4. ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
  5. byte[] buffer = new byte[1024];
  6. int length = 0;
  7. while((length = inputStream.read(buffer)) != -1) {
  8. //把需要可重用的流,写入到内存输出流
  9. byteArrayOutputStream.write(buffer,0,length);
  10. byteArrayOutputStream.flush();
  11. }
  12. inputStream.close();
  13. //根据内存输出流创建N多个内存输入流,从而实现流的重用
  14. ByteArrayInputStream byteArrayInputStream1 = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
  15. ByteArrayInputStream byteArrayInputStream2 = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
  16. System.out.println(byteArrayInputStream1.available()); //105335
  17. System.out.println(byteArrayInputStream2.available()); //105335

该方法浪费了一定的内存,特别是文件过大的情况下,不是理想的办法


0
0
0

添加评论

正在回复:
取消
0
0
0
0