SAP CPI-如何在CPI中解压缩多个文件

2020-08-30 00:10发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我收到的zip文件包含1...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我收到的zip文件包含1个xml文件和1个pdf文件。

因此标准解码器Zip解压缩将无法正常工作,因为它包含多个文件

任何可用于处理此问题的Groovy/Java脚本

预先感谢

3条回答
黑丝骑士
2020-08-30 00:51

您好,

您可以使用Groovy脚本解压缩文件。 我过去曾经使用过以下脚本:

 import com.sap.gateway.ip.core.customdev.util.Message
 导入java.util.zip.ZipInputStream
 导入java.util.zip.ZipEntry


 消息processData(消息){


//将您的zip文件读取到字节数组
 def pkgBytes = ...

//获取ZIP清单
 def zipEntries = extractZipEntries(pkgBytes)

//根据条目执行所需操作
//例如。 将条目名称传递给readEntryFromZipAsString(...)

     返回讯息
 }


 私人extractZipEntries(byte []内容)引发IOException {
     def条目= [];
     ZipInputStream zi = null;
     尝试{
         zi =新的ZipInputStream(新的ByteArrayInputStream(内容));
         ZipEntry zipEntry = null;
         while(((zipEntry = zi.getNextEntry())!= null){
             entry.add(zipEntry);
         }
     }最后{
         如果(zi!= null){
             zi.close();
         }
     }
     返回条目;
 }


 私人readEntryFromZipAsString(byte [] content,def fileName){
 StringBuilder s =新的StringBuilder()
 字节[]缓冲区=新字节[1024]
 读取的int = 0
     ZipInputStream zi = null
     尝试{
         zi =新的ZipInputStream(新的ByteArrayInputStream(内容))
         ZipEntry zipEntry = null
         while(((zipEntry = zi.getNextEntry())!= null){
             如果(zipEntry.name == fileName){
             而((read = zi.read(buffer,0,1024))> = 0){
 s.append(新字符串(缓冲区,0,读)
 }
             }
         }
     }最后{
         如果(zi!= null){
             zi.close()
         }
     }
     返回s.toString()
 }
 

一周热门 更多>