您现在的位置是:网站首页>>信息浏览 文章详情

springMVC接收zip文件和直接解析读取zip文件信息
2019-08-08 12:29 许多年以后 1211

我们要实现在线解析和读取zip文件信息,关键的方法是getNextEntry 这个方法是读取下一个ZIP文件条目并将该流定位在条目数据的开头。

  1. @RequestMapping(value={"/zipFileImport"})
  2. public void zipFileImport( @RequestParam("file")MultipartFile file) throws Exception{
  3. //获取输入流
  4. InputStream inf = file.getInputStream();
  5. String upFileName = file.getOriginalFilename();
  6. //解压文件
  7. if(upFileName.toLowerCase().endsWith("zip"))
  8. unZipFile(inf);
  9. }
  10. /**
  11. *
  12. * Method description : 获取条目byte[]字节
  13. *
  14. * Author: 13434
  15. * Create Date: 2019年8月8日 上午10:25:17
  16. * History: 2019年8月8日 上午10:25:17 13434 Created.
  17. *
  18. * @param zis
  19. * @return
  20. *
  21. */
  22. private byte[] getByte(InflaterInputStream zis) {
  23. try {
  24. ByteArrayOutputStream bout = new ByteArrayOutputStream();
  25. byte[] temp = new byte[1024];
  26. byte[] buf = null;
  27. int length = 0;
  28. while ((length = zis.read(temp, 0, 1024)) != -1) {
  29. bout.write(temp, 0, length);
  30. }
  31. buf = bout.toByteArray();
  32. bout.close();
  33. return buf;
  34. } catch (IOException e) {
  35. e.printStackTrace();
  36. return null;
  37. }
  38. }
  39. //解压获取所有条目,关键字为名字,内容为条目的InputStream
  40. public Map<String,InputStream> unZipFile(InputStream in)throws Exception {
  41. Map<String,InputStream> map=new HashMap<String,InputStream>();
  42. //转换为ZIP输入流
  43. ZipInputStream zin = new ZipInputStream(in);
  44. ZipEntry ze;
  45. try {
  46. //getNextEntry读取下一个ZIP文件条目并将该流定位在条目数据的开头。
  47. while ((ze = zin.getNextEntry()) != null) {
  48. byte[] data = getByte(zin); // 获取当前条目的字节数组
  49. InputStream is = new ByteArrayInputStream(data); // 把当前条目的字节数据转换成Inputstream流
  50. // BufferedReader br= new BufferedReader(new InputStreamReader(is));
  51. map.put(ze.getName(), is);
  52. }
  53. }catch (Exception e) {
  54. // TODO: handle exception
  55. e.printStackTrace();
  56. }finally {
  57. zin.close();
  58. }
  59. return map;
  60. }

总结,这样我们就可以在线直接读取这些信息了

赞 (109)
文章出处:书生个人博客          转载注明下哦!o(≧v≦)o~~

标签: undefined

相似文章:


展开阅读全文
随便说两句
请先登录
遵守国家法律法规,请勿回复无意义内容,请不要回复嵌套过多的楼层!