文件流复制

短命女 2022-11-20 09:47 267阅读 0赞
  1. @PostMapping("/upload")
  2. public void uploadFile(MultipartFile file){
  3. InputStream streamOne;
  4. InputStream streamTwo;
  5. InputStream inputStream;
  6. try {
  7. inputStream = file.getInputStream();
  8. } catch (IOException e) {
  9. log.error("Get file stream exception", e);
  10. throw new IllegalArgumentException("文件上传失败");
  11. }
  12. ByteArrayOutputStream baos = copyInputStream(inputStream);
  13. streamOne = new ByteArrayInputStream(baos.toByteArray());
  14. streamTwo = new ByteArrayInputStream(baos.toByteArray());
  15. //业务处理
  16. //....
  17. }
  18. /** * 流复制 */
  19. private static ByteArrayOutputStream copyInputStream(InputStream input) {
  20. try {
  21. //spring 计时器
  22. Stopwatch stopWatch = Stopwatch.createStarted();
  23. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  24. // 定义一个缓存数组,临时存放读取的数组
  25. byte[] buffer = new byte[4096];
  26. int length;
  27. while ((length = input.read(buffer)) > -1) {
  28. baos.write(buffer, 0, length);
  29. }
  30. baos.flush();
  31. stopWatch.stop();
  32. log.info("流拷贝,总耗时[{}] ms", stopWatch.elapsed(TimeUnit.MILLISECONDS));
  33. return baos;
  34. } catch (IOException e) {
  35. log.error("Stream copy exception", e);
  36. }
  37. throw new IllegalArgumentException("文件上传失败");
  38. }
  39. }

发表评论

表情:
评论列表 (有 0 条评论,267人围观)

还没有评论,来说两句吧...

相关阅读

    相关 使用IO复制文件

    对文件的读取也是经常会遇到的操作,那么哪种方式效率更快呢,今天来做个测试。 首先能想到的就是,应该采用字节流对文件进行复制,文件可以是任何形式,如图片、视频、办公文档、压缩文