2020-08-30 00:10发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我收到的zip文件包含1个xml文件和1个pdf文件。
因此标准解码器Zip解压缩将无法正常工作,因为它包含多个文件
任何可用于处理此问题的Groovy/Java脚本
预先感谢
您好,
有一个类似的要求,即需要脚本并将其附加在答案中。
https://answers.sap.com/questions/391156/error-while-unzipping-files-using-groovy-script。 html
希望这会有所帮助!
感谢和问候,
Praveen T
嗨,何塞,
示例中的变量zipEntries包含一个zip条目列表。 ZipEntry是一个元数据对象,其中包含有关保存在zip中的文件的有用信息。
要读取实际文件,请将文件名传递给readEntryFromZipAsString函数,如下所示:
(示例显示了如何读取第一个文件。请注意,这应该适用于XML文件。 PDF,您可以调整读取功能,因为PDF应该读取为byte []而不是字符串)
def myfileContent = readEntryFromZipAsString(bytes,zipEntries [0] .getName())
您可以使用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() }
最多设置5个标签!
您好,
有一个类似的要求,即需要脚本并将其附加在答案中。
https://answers.sap.com/questions/391156/error-while-unzipping-files-using-groovy-script。 html
希望这会有所帮助!
感谢和问候,
Praveen T
嗨,何塞,
示例中的变量zipEntries包含一个zip条目列表。 ZipEntry是一个元数据对象,其中包含有关保存在zip中的文件的有用信息。
要读取实际文件,请将文件名传递给readEntryFromZipAsString函数,如下所示:
(示例显示了如何读取第一个文件。请注意,这应该适用于XML文件。 PDF,您可以调整读取功能,因为PDF应该读取为byte []而不是字符串)
您好,
您可以使用Groovy脚本解压缩文件。 我过去曾经使用过以下脚本:
一周热门 更多>